Skip to content

Instantly share code, notes, and snippets.

@tlux
tlux / interpolations.coffee
Last active December 17, 2015 06:39
Ruby-like string interpolations for JavaScript/CoffeeScript
# "Hello, %{name}!".interpolate(name: 'Tobias') # => "Hello, Tobias!"
String::interpolate = (interpolations = {}) ->
@replace /%\{(.*?)\}/g, (whole, key) ->
camelizedKey = _(key).camelize()
camelizedKey = camelizedKey.charAt(0).toLowerCase() + camelizedKey.slice(1)
interpolations[camelizedKey] || interpolations[key] || ''
@tlux
tlux / underscore.coffee
Last active December 17, 2015 09:59
underscore.coffee
String::camelize = ->
pieces = @split(/[\W_-]/)
$.map(pieces, (piece) -> piece.capitalize()).join("")
String::capitalize = ->
@charAt(0).toUpperCase() + @slice(1)
String::dasherize = ->
@replace("_", "-")
$.timeago.settings.strings =
prefixAgo: I18n.translate('timeago.prefix_ago') # vor
prefixFromNow: I18n.translate('timeago.prefix_from_now') # in
suffixAgo: I18n.translate('timeago.suffix_ago') # ""
suffixFromNow: I18n.translate('timeago.suffix_from_now') # ""
seconds: (number) -> I18n.translate('timeago.seconds', seconds: number) # wenigen Sekunden
minute: (number) -> I18n.translate('timeago.minute', minutes: number) # etwa einer Minute
minutes: (number) -> I18n.translate('timeago.minutes', minutes: number) # %d Minuten
hour: (number) -> I18n.translate('timeago.hour', hours: number) # etwa einer Stunde
hours: (number) -> I18n.translate('timeago.hours', hours: number) # %d Stunden
@tlux
tlux / sluggable.rb
Last active December 17, 2015 16:39
Concern for easily creating slugs
# Usage:
#
# include Sluggable
#
# slug :title
# slug :title, to: :permalink
# slug :title, unique: false
# slug :title, force: true
# slug :title, scope: [:category_id, :parent_id]
#
@tlux
tlux / product_attribute.rb
Last active December 19, 2015 00:09
Query for serialized fields
class ProductAttribute < ActiveRecord::Base
# ...
serialize :value
class << self
def with_value(value)
dumped_value = serialized_attributes['value'].dump(value)
where(value: dumped_value)
end
@tlux
tlux / haml_presenter.rb
Last active December 19, 2015 15:18
Presenter
class HamlPresenter < Presenter
include Haml::Helpers
def initialize(locals = {})
super
init_haml_helpers
end
end
@tlux
tlux / button_helper.rb
Created July 21, 2013 19:16
Button Helper Module for Bootstrap Buttons
module ButtonHelper
def button_link_to(*args, &block)
extract_button_options!(args)
link_to *args, &block
end
def button_link_to_if(condition, *args, &block)
extract_button_options!(args)
link_to_if condition, *args, &block
end
@tlux
tlux / flag_collection_proxy.rb
Last active December 20, 2015 06:58
Flag Converter
class FlagCollectionProxy
attr_reader :record, :attribute_name
def initialize(record, attribute_name)
@record = record
@attribute_name = attribute_name
@flags = flag_converter.to_a(value).map(&:to_s)
end
def initialize_clone(other)
@tlux
tlux / submit_disabler.coffee
Last active December 20, 2015 17:28
Submit Disabler
createArbitraryField = ($button) ->
$form = $button.closest('form')
buttonName = $button.attr('name')
buttonValue = $button.val()
$('<input />', type: 'hidden', name: buttonName, value: buttonValue).appendTo($form)
destroyArbitraryField = ($button) ->
$form = $button.closest('form')
buttonName = $button.attr('name')
$form.find("input[type='hidden'][name='#{buttonName}']").remove()
@tlux
tlux / application_controller.rb
Last active December 20, 2015 18:39
Breadcrumbs
class ApplicationController < ActionController::Base
include BreadcrumbedController
before_action :set_controller_context
private
def set_controller_context
RequestStore.store[:controller_context] = self
end
end