Skip to content

Instantly share code, notes, and snippets.

View patorash's full-sized avatar
👓
I'm sleepy

patorash patorash

👓
I'm sleepy
View GitHub Profile
@patorash
patorash / _form.html.erb
Last active January 26, 2017 01:47
Custom binding of knockout.js using jQueryFileUpload.
<!-- app/views/foos/_form.html.erb -->
<%= file_field_tag '',
style: 'display: none',
data: {
bind: "s3DirectUpload: { start: start_direct_upload, done: finished_direct_upload, fail: failed_direct_upload, progressall: progress_direct_upload }",
'form-data': @s3_direct_post.fields,
url: @s3_direct_post.url,
host: Url.parse(@s3_direct_post.url).host
} %>
@patorash
patorash / _placeholder_selectors.scss
Created December 28, 2016 05:51
IEでもtext-align: justify;が効かせるplaceholder selectorを定義した。
%text-align-justify {
text-align: justify;
text-justify: inter-ideograph;
}
@patorash
patorash / _columns.scss
Last active December 20, 2016 05:30
Bootstrap3でカラムを中央揃えにする
/**
* Bootstrap3でカラムを中央揃えにする
*
*/
@for $i from 1 through ($grid-columns / 2) {
$columns: $i * 2;
$offset: ($grid-columns - $columns) / 2;
.col-xs-center-#{$columns} {
@include make-xs-column-offset($offset);
@include make-xs-column($columns);
@patorash
patorash / ko-nl2br.js
Created August 5, 2016 04:34
knockout.jsでエスケープ処理を行った上でnl2brするカスタムバインディング
ko.bindingHandlers.nl2br = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var field = ko.utils.unwrapObservable(valueAccessor());
var lines = field.split(/\r\n|\r|\n/).map(function(line) { return document.createTextNode(line) });
var div = document.createElement('div');
lines.forEach(function(line, idx, lines) {
div.appendChild(line);
if (idx !== lines.length - 1) {
div.appendChild(document.createElement('br'))
}
@patorash
patorash / json_type_validator.rb
Created May 30, 2016 03:02
json type validator of ActiveRecord.
# Put this code in lib/validators/json_type_validator.rb
# Usage in your model:
# validates :json_attribute, json_type: true
#
# To have a detailed error use something like:
# validates :json_attribute, presence: true, json_type: {message: :some_i18n_key}
# In your yaml use:
# some_i18n_key: "detailed exception message: %{exception_message}"
#
# @see https://gist.github.com/joost/7ee5fbcc40e377369351
@patorash
patorash / knockout-cursor-wait.js
Last active April 15, 2016 04:44
knockout.jsでカーソルを砂時計に変えるbindingHandlerをを作った。Ajaxなど待ち時間が発生する際にお使いください。
ko.bindingHandlers.cursor_wait = {
init: function(element, valueAccessor) {
ko.computed({
read: function() {
if (ko.unwrap(valueAccessor()))
document.body.style.cursor = 'wait';
else
document.body.style.cursor = 'auto';
},
disposeWhenNodeIsRemoved: element
@patorash
patorash / enum_help_ransack.rb
Created December 28, 2015 06:23
ransackで検索するときにenum_helpがうまく使えないのでConcernを作った。
module EnumHelpRansack
extend ActiveSupport::Concern
module ClassMethods
def enums_i18n_ransack(enum_name)
enums = eval("self.#{enum_name.to_s.pluralize}")
enums.map { |k, v| [eval("self.#{enum_name.to_s.pluralize}_i18n")[k], v] }
end
end
end
@patorash
patorash / peco_ssh.fish
Created December 24, 2015 01:00
fishにて、pecoを使って~/.ssh/configの情報を元にsshの接続先を選択可能にしたやつ
function peco_ssh
awk '
tolower($1)=="host" {
for(i=2;i<=NF; i++) {
if ($i !~ "[*?]") {
print $i
}
}
}
' ~/.ssh/config | sort | peco | read -l hostname
@patorash
patorash / peco_rspec.fish
Created December 19, 2015 03:21
pecoでRspecのファイルを探し出して実行する。
function peco_rspec
find . -follow -name "*_spec.rb" | peco | read -l file_name
echo "bin/rspec $file_name"
bin/rspec $file_name
commandline "bin/rspec $file_name"
end
@patorash
patorash / peco_delete_branch.fish
Last active May 23, 2021 21:42
pecoを使って削除したいブランチを選択するfish用関数や、その他もろもろ。
function peco_delete_branch
git branch | peco | read line
set -l branch_name (echo $line | awk '{print $1}')
if test "$branch_name" != "*"
git branch -d $branch_name
else
echo "Can't delete current branch."
end
end