")
+ # # => ]]>
+ #
+ # cdata_section(File.read("hello_world.txt"))
+ # # =>
+ #
+ # cdata_section("hello]]>world")
+ # # => world]]>
+ def cdata_section(content)
+ splitted = content.to_s.gsub(/\]\]\>/, ']]]]>')
+ "".html_safe
+ end
+
+ # Returns an escaped version of +html+ without affecting existing escaped entities.
+ #
+ # escape_once("1 < 2 & 3")
+ # # => "1 < 2 & 3"
+ #
+ # escape_once("<< Accept & Checkout")
+ # # => "<< Accept & Checkout"
+ def escape_once(html)
+ ERB::Util.html_escape_once(html)
+ end
+
+ private
+
+ def content_tag_string(name, content, options, escape = true)
+ tag_options = tag_options(options, escape) if options
+ content = ERB::Util.unwrapped_html_escape(content) if escape
+ "<#{name}#{tag_options}>#{PRE_CONTENT_STRINGS[name.to_sym]}#{content}#{name}>".html_safe
+ end
+
+ def tag_options(options, escape = true)
+ return if options.blank?
+ attrs = []
+ options.each_pair do |key, value|
+ if TAG_PREFIXES.include?(key) && value.is_a?(Hash)
+ value.each_pair do |k, v|
+ attrs << prefix_tag_option(key, k, v, escape)
+ end
+ elsif BOOLEAN_ATTRIBUTES.include?(key)
+ attrs << boolean_tag_option(key) if value
+ elsif !value.nil?
+ attrs << tag_option(key, value, escape)
+ end
+ end
+ " #{attrs * ' '}" unless attrs.empty?
+ end
+
+ def prefix_tag_option(prefix, key, value, escape)
+ key = "#{prefix}-#{key.to_s.dasherize}"
+ unless value.is_a?(String) || value.is_a?(Symbol) || value.is_a?(BigDecimal)
+ value = value.to_json
+ end
+ tag_option(key, value, escape)
+ end
+
+ def boolean_tag_option(key)
+ %(#{key}="#{key}")
+ end
+
+ def tag_option(key, value, escape)
+ if value.is_a?(Array)
+ value = escape ? safe_join(value, " ") : value.join(" ")
+ else
+ value = escape ? ERB::Util.unwrapped_html_escape(value) : value
+ end
+ %(#{key}="#{value}")
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags.rb
new file mode 100644
index 0000000..a4f6eb0
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags.rb
@@ -0,0 +1,42 @@
+module ActionView
+ module Helpers
+ module Tags #:nodoc:
+ extend ActiveSupport::Autoload
+
+ eager_autoload do
+ autoload :Base
+ autoload :Translator
+ autoload :CheckBox
+ autoload :CollectionCheckBoxes
+ autoload :CollectionRadioButtons
+ autoload :CollectionSelect
+ autoload :ColorField
+ autoload :DateField
+ autoload :DateSelect
+ autoload :DatetimeField
+ autoload :DatetimeLocalField
+ autoload :DatetimeSelect
+ autoload :EmailField
+ autoload :FileField
+ autoload :GroupedCollectionSelect
+ autoload :HiddenField
+ autoload :Label
+ autoload :MonthField
+ autoload :NumberField
+ autoload :PasswordField
+ autoload :RadioButton
+ autoload :RangeField
+ autoload :SearchField
+ autoload :Select
+ autoload :TelField
+ autoload :TextArea
+ autoload :TextField
+ autoload :TimeField
+ autoload :TimeSelect
+ autoload :TimeZoneSelect
+ autoload :UrlField
+ autoload :WeekField
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/base.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/base.rb
new file mode 100644
index 0000000..7740c60
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/base.rb
@@ -0,0 +1,155 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class Base # :nodoc:
+ include Helpers::ActiveModelInstanceTag, Helpers::TagHelper, Helpers::FormTagHelper
+ include FormOptionsHelper
+
+ attr_reader :object
+
+ def initialize(object_name, method_name, template_object, options = {})
+ @object_name, @method_name = object_name.to_s.dup, method_name.to_s.dup
+ @template_object = template_object
+
+ @object_name.sub!(/\[\]$/,"") || @object_name.sub!(/\[\]\]$/,"]")
+ @object = retrieve_object(options.delete(:object))
+ @options = options
+ @auto_index = retrieve_autoindex(Regexp.last_match.pre_match) if Regexp.last_match
+ end
+
+ # This is what child classes implement.
+ def render
+ raise NotImplementedError, "Subclasses must implement a render method"
+ end
+
+ private
+
+ def value(object)
+ object.public_send @method_name if object
+ end
+
+ def value_before_type_cast(object)
+ unless object.nil?
+ method_before_type_cast = @method_name + "_before_type_cast"
+
+ if value_came_from_user?(object) && object.respond_to?(method_before_type_cast)
+ object.public_send(method_before_type_cast)
+ else
+ value(object)
+ end
+ end
+ end
+
+ def value_came_from_user?(object)
+ method_name = "#{@method_name}_came_from_user?"
+ !object.respond_to?(method_name) || object.public_send(method_name)
+ end
+
+ def retrieve_object(object)
+ if object
+ object
+ elsif @template_object.instance_variable_defined?("@#{@object_name}")
+ @template_object.instance_variable_get("@#{@object_name}")
+ end
+ rescue NameError
+ # As @object_name may contain the nested syntax (item[subobject]) we need to fallback to nil.
+ nil
+ end
+
+ def retrieve_autoindex(pre_match)
+ object = self.object || @template_object.instance_variable_get("@#{pre_match}")
+ if object && object.respond_to?(:to_param)
+ object.to_param
+ else
+ raise ArgumentError, "object[] naming but object param and @object var don't exist or don't respond to to_param: #{object.inspect}"
+ end
+ end
+
+ def add_default_name_and_id_for_value(tag_value, options)
+ if tag_value.nil?
+ add_default_name_and_id(options)
+ else
+ specified_id = options["id"]
+ add_default_name_and_id(options)
+
+ if specified_id.blank? && options["id"].present?
+ options["id"] += "_#{sanitized_value(tag_value)}"
+ end
+ end
+ end
+
+ def add_default_name_and_id(options)
+ if options.has_key?("index")
+ options["name"] ||= options.fetch("name"){ tag_name_with_index(options["index"], options["multiple"]) }
+ options["id"] = options.fetch("id"){ tag_id_with_index(options["index"]) }
+ options.delete("index")
+ elsif defined?(@auto_index)
+ options["name"] ||= options.fetch("name"){ tag_name_with_index(@auto_index, options["multiple"]) }
+ options["id"] = options.fetch("id"){ tag_id_with_index(@auto_index) }
+ else
+ options["name"] ||= options.fetch("name"){ tag_name(options["multiple"]) }
+ options["id"] = options.fetch("id"){ tag_id }
+ end
+
+ options["id"] = [options.delete('namespace'), options["id"]].compact.join("_").presence
+ end
+
+ def tag_name(multiple = false)
+ "#{@object_name}[#{sanitized_method_name}]#{"[]" if multiple}"
+ end
+
+ def tag_name_with_index(index, multiple = false)
+ "#{@object_name}[#{index}][#{sanitized_method_name}]#{"[]" if multiple}"
+ end
+
+ def tag_id
+ "#{sanitized_object_name}_#{sanitized_method_name}"
+ end
+
+ def tag_id_with_index(index)
+ "#{sanitized_object_name}_#{index}_#{sanitized_method_name}"
+ end
+
+ def sanitized_object_name
+ @sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
+ end
+
+ def sanitized_method_name
+ @sanitized_method_name ||= @method_name.sub(/\?$/,"")
+ end
+
+ def sanitized_value(value)
+ value.to_s.gsub(/\s/, "_").gsub(/[^-\w]/, "").downcase
+ end
+
+ def select_content_tag(option_tags, options, html_options)
+ html_options = html_options.stringify_keys
+ add_default_name_and_id(html_options)
+ options[:include_blank] ||= true unless options[:prompt] || select_not_required?(html_options)
+ value = options.fetch(:selected) { value(object) }
+ select = content_tag("select", add_options(option_tags, options, value), html_options)
+
+ if html_options["multiple"] && options.fetch(:include_hidden, true)
+ tag("input", :disabled => html_options["disabled"], :name => html_options["name"], :type => "hidden", :value => "") + select
+ else
+ select
+ end
+ end
+
+ def select_not_required?(html_options)
+ !html_options["required"] || html_options["multiple"] || html_options["size"].to_i > 1
+ end
+
+ def add_options(option_tags, options, value = nil)
+ if options[:include_blank]
+ option_tags = content_tag_string('option', options[:include_blank].kind_of?(String) ? options[:include_blank] : nil, :value => '') + "\n" + option_tags
+ end
+ if value.blank? && options[:prompt]
+ option_tags = content_tag_string('option', prompt_text(options[:prompt]), :value => '') + "\n" + option_tags
+ end
+ option_tags
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/check_box.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/check_box.rb
new file mode 100644
index 0000000..6d51f26
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/check_box.rb
@@ -0,0 +1,64 @@
+require 'action_view/helpers/tags/checkable'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class CheckBox < Base #:nodoc:
+ include Checkable
+
+ def initialize(object_name, method_name, template_object, checked_value, unchecked_value, options)
+ @checked_value = checked_value
+ @unchecked_value = unchecked_value
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ options = @options.stringify_keys
+ options["type"] = "checkbox"
+ options["value"] = @checked_value
+ options["checked"] = "checked" if input_checked?(object, options)
+
+ if options["multiple"]
+ add_default_name_and_id_for_value(@checked_value, options)
+ options.delete("multiple")
+ else
+ add_default_name_and_id(options)
+ end
+
+ include_hidden = options.delete("include_hidden") { true }
+ checkbox = tag("input", options)
+
+ if include_hidden
+ hidden = hidden_field_for_checkbox(options)
+ hidden + checkbox
+ else
+ checkbox
+ end
+ end
+
+ private
+
+ def checked?(value)
+ case value
+ when TrueClass, FalseClass
+ value == !!@checked_value
+ when NilClass
+ false
+ when String
+ value == @checked_value
+ else
+ if value.respond_to?(:include?)
+ value.include?(@checked_value)
+ else
+ value.to_i == @checked_value.to_i
+ end
+ end
+ end
+
+ def hidden_field_for_checkbox(options)
+ @unchecked_value ? tag("input", options.slice("name", "disabled", "form").merge!("type" => "hidden", "value" => @unchecked_value)) : "".html_safe
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/checkable.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/checkable.rb
new file mode 100644
index 0000000..052e9df
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/checkable.rb
@@ -0,0 +1,16 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ module Checkable # :nodoc:
+ def input_checked?(object, options)
+ if options.has_key?("checked")
+ checked = options.delete "checked"
+ checked == true || checked == "checked"
+ else
+ checked?(value(object))
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_check_boxes.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_check_boxes.rb
new file mode 100644
index 0000000..6242a2a
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_check_boxes.rb
@@ -0,0 +1,57 @@
+require 'action_view/helpers/tags/collection_helpers'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class CollectionCheckBoxes < Base # :nodoc:
+ include CollectionHelpers
+
+ class CheckBoxBuilder < Builder # :nodoc:
+ def check_box(extra_html_options={})
+ html_options = extra_html_options.merge(@input_html_options)
+ @template_object.check_box(@object_name, @method_name, html_options, @value, nil)
+ end
+ end
+
+ def render(&block)
+ rendered_collection = render_collection do |item, value, text, default_html_options|
+ default_html_options[:multiple] = true
+ builder = instantiate_builder(CheckBoxBuilder, item, value, text, default_html_options)
+
+ if block_given?
+ @template_object.capture(builder, &block)
+ else
+ render_component(builder)
+ end
+ end
+
+ # Append a hidden field to make sure something will be sent back to the
+ # server if all check boxes are unchecked.
+ if @options.fetch(:include_hidden, true)
+ rendered_collection + hidden_field
+ else
+ rendered_collection
+ end
+ end
+
+ private
+
+ def render_component(builder)
+ builder.check_box + builder.label
+ end
+
+ def hidden_field
+ hidden_name = @html_options[:name]
+
+ hidden_name ||= if @options.has_key?(:index)
+ "#{tag_name_with_index(@options[:index])}[]"
+ else
+ "#{tag_name}[]"
+ end
+
+ @template_object.hidden_field_tag(hidden_name, "", id: nil)
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_helpers.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_helpers.rb
new file mode 100644
index 0000000..8050638
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_helpers.rb
@@ -0,0 +1,85 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ module CollectionHelpers # :nodoc:
+ class Builder # :nodoc:
+ attr_reader :object, :text, :value
+
+ def initialize(template_object, object_name, method_name, object,
+ sanitized_attribute_name, text, value, input_html_options)
+ @template_object = template_object
+ @object_name = object_name
+ @method_name = method_name
+ @object = object
+ @sanitized_attribute_name = sanitized_attribute_name
+ @text = text
+ @value = value
+ @input_html_options = input_html_options
+ end
+
+ def label(label_html_options={}, &block)
+ html_options = @input_html_options.slice(:index, :namespace).merge(label_html_options)
+ @template_object.label(@object_name, @sanitized_attribute_name, @text, html_options, &block)
+ end
+ end
+
+ def initialize(object_name, method_name, template_object, collection, value_method, text_method, options, html_options)
+ @collection = collection
+ @value_method = value_method
+ @text_method = text_method
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ private
+
+ def instantiate_builder(builder_class, item, value, text, html_options)
+ builder_class.new(@template_object, @object_name, @method_name, item,
+ sanitize_attribute_name(value), text, value, html_options)
+ end
+
+ # Generate default options for collection helpers, such as :checked and
+ # :disabled.
+ def default_html_options_for_collection(item, value) #:nodoc:
+ html_options = @html_options.dup
+
+ [:checked, :selected, :disabled, :readonly].each do |option|
+ current_value = @options[option]
+ next if current_value.nil?
+
+ accept = if current_value.respond_to?(:call)
+ current_value.call(item)
+ else
+ Array(current_value).map(&:to_s).include?(value.to_s)
+ end
+
+ if accept
+ html_options[option] = true
+ elsif option == :checked
+ html_options[option] = false
+ end
+ end
+
+ html_options[:object] = @object
+ html_options
+ end
+
+ def sanitize_attribute_name(value) #:nodoc:
+ "#{sanitized_method_name}_#{sanitized_value(value)}"
+ end
+
+ def render_collection #:nodoc:
+ @collection.map do |item|
+ value = value_for_collection(item, @value_method)
+ text = value_for_collection(item, @text_method)
+ default_html_options = default_html_options_for_collection(item, value)
+ additional_html_options = option_html_attributes(item)
+
+ yield item, value, text, default_html_options.merge(additional_html_options)
+ end.join.html_safe
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_radio_buttons.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_radio_buttons.rb
new file mode 100644
index 0000000..20be34c
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_radio_buttons.rb
@@ -0,0 +1,36 @@
+require 'action_view/helpers/tags/collection_helpers'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class CollectionRadioButtons < Base # :nodoc:
+ include CollectionHelpers
+
+ class RadioButtonBuilder < Builder # :nodoc:
+ def radio_button(extra_html_options={})
+ html_options = extra_html_options.merge(@input_html_options)
+ @template_object.radio_button(@object_name, @method_name, @value, html_options)
+ end
+ end
+
+ def render(&block)
+ render_collection do |item, value, text, default_html_options|
+ builder = instantiate_builder(RadioButtonBuilder, item, value, text, default_html_options)
+
+ if block_given?
+ @template_object.capture(builder, &block)
+ else
+ render_component(builder)
+ end
+ end
+ end
+
+ private
+
+ def render_component(builder)
+ builder.radio_button + builder.label
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_select.rb
new file mode 100644
index 0000000..6cb2b2e
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/collection_select.rb
@@ -0,0 +1,28 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class CollectionSelect < Base #:nodoc:
+ def initialize(object_name, method_name, template_object, collection, value_method, text_method, options, html_options)
+ @collection = collection
+ @value_method = value_method
+ @text_method = text_method
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ option_tags_options = {
+ :selected => @options.fetch(:selected) { value(@object) },
+ :disabled => @options[:disabled]
+ }
+
+ select_content_tag(
+ options_from_collection_for_select(@collection, @value_method, @text_method, option_tags_options),
+ @options, @html_options
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/color_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/color_field.rb
new file mode 100644
index 0000000..b4bbe92
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/color_field.rb
@@ -0,0 +1,25 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class ColorField < TextField # :nodoc:
+ def render
+ options = @options.stringify_keys
+ options["value"] ||= validate_color_string(value(object))
+ @options = options
+ super
+ end
+
+ private
+
+ def validate_color_string(string)
+ regex = /#[0-9a-fA-F]{6}/
+ if regex.match(string)
+ string.downcase
+ else
+ "#000000"
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_field.rb
new file mode 100644
index 0000000..c22be0d
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_field.rb
@@ -0,0 +1,13 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class DateField < DatetimeField # :nodoc:
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%Y-%m-%d")
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_select.rb
new file mode 100644
index 0000000..0c4ac40
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/date_select.rb
@@ -0,0 +1,72 @@
+require 'active_support/core_ext/time/calculations'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class DateSelect < Base # :nodoc:
+ def initialize(object_name, method_name, template_object, options, html_options)
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ error_wrapping(datetime_selector(@options, @html_options).send("select_#{select_type}").html_safe)
+ end
+
+ class << self
+ def select_type
+ @select_type ||= self.name.split("::").last.sub("Select", "").downcase
+ end
+ end
+
+ private
+
+ def select_type
+ self.class.select_type
+ end
+
+ def datetime_selector(options, html_options)
+ datetime = options.fetch(:selected) { value(object) || default_datetime(options) }
+ @auto_index ||= nil
+
+ options = options.dup
+ options[:field_name] = @method_name
+ options[:include_position] = true
+ options[:prefix] ||= @object_name
+ options[:index] = @auto_index if @auto_index && !options.has_key?(:index)
+
+ DateTimeSelector.new(datetime, options, html_options)
+ end
+
+ def default_datetime(options)
+ return if options[:include_blank] || options[:prompt]
+
+ case options[:default]
+ when nil
+ Time.current
+ when Date, Time
+ options[:default]
+ else
+ default = options[:default].dup
+
+ # Rename :minute and :second to :min and :sec
+ default[:min] ||= default[:minute]
+ default[:sec] ||= default[:second]
+
+ time = Time.current
+
+ [:year, :month, :day, :hour, :min, :sec].each do |key|
+ default[key] ||= time.send(key)
+ end
+
+ Time.utc(
+ default[:year], default[:month], default[:day],
+ default[:hour], default[:min], default[:sec]
+ )
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_field.rb
new file mode 100644
index 0000000..b2cee9d
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_field.rb
@@ -0,0 +1,30 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class DatetimeField < TextField # :nodoc:
+ def render
+ options = @options.stringify_keys
+ options["value"] ||= format_date(value(object))
+ options["min"] = format_date(datetime_value(options["min"]))
+ options["max"] = format_date(datetime_value(options["max"]))
+ @options = options
+ super
+ end
+
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%Y-%m-%dT%T.%L%z")
+ end
+
+ def datetime_value(value)
+ if value.is_a? String
+ DateTime.parse(value) rescue nil
+ else
+ value
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_local_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_local_field.rb
new file mode 100644
index 0000000..b4a7418
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_local_field.rb
@@ -0,0 +1,19 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class DatetimeLocalField < DatetimeField # :nodoc:
+ class << self
+ def field_type
+ @field_type ||= "datetime-local"
+ end
+ end
+
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%Y-%m-%dT%T")
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_select.rb
new file mode 100644
index 0000000..563de18
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/datetime_select.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class DatetimeSelect < DateSelect # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/email_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/email_field.rb
new file mode 100644
index 0000000..7ce3ccb
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/email_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class EmailField < TextField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/file_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/file_field.rb
new file mode 100644
index 0000000..476b820
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/file_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class FileField < TextField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/grouped_collection_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/grouped_collection_select.rb
new file mode 100644
index 0000000..2ed4712
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/grouped_collection_select.rb
@@ -0,0 +1,29 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class GroupedCollectionSelect < Base # :nodoc:
+ def initialize(object_name, method_name, template_object, collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
+ @collection = collection
+ @group_method = group_method
+ @group_label_method = group_label_method
+ @option_key_method = option_key_method
+ @option_value_method = option_value_method
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ option_tags_options = {
+ :selected => @options.fetch(:selected) { value(@object) },
+ :disabled => @options[:disabled]
+ }
+
+ select_content_tag(
+ option_groups_from_collection_for_select(@collection, @group_method, @group_label_method, @option_key_method, @option_value_method, option_tags_options), @options, @html_options
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/hidden_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/hidden_field.rb
new file mode 100644
index 0000000..c3757c2
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/hidden_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class HiddenField < TextField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/label.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/label.rb
new file mode 100644
index 0000000..6476534
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/label.rb
@@ -0,0 +1,79 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class Label < Base # :nodoc:
+ class LabelBuilder # :nodoc:
+ attr_reader :object
+
+ def initialize(template_object, object_name, method_name, object, tag_value)
+ @template_object = template_object
+ @object_name = object_name
+ @method_name = method_name
+ @object = object
+ @tag_value = tag_value
+ end
+
+ def translation
+ method_and_value = @tag_value.present? ? "#{@method_name}.#{@tag_value}" : @method_name
+
+ content ||= Translator
+ .new(object, @object_name, method_and_value, "helpers.label")
+ .translate
+ content ||= @method_name.humanize
+
+ content
+ end
+ end
+
+ def initialize(object_name, method_name, template_object, content_or_options = nil, options = nil)
+ options ||= {}
+
+ content_is_options = content_or_options.is_a?(Hash)
+ if content_is_options
+ options.merge! content_or_options
+ @content = nil
+ else
+ @content = content_or_options
+ end
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render(&block)
+ options = @options.stringify_keys
+ tag_value = options.delete("value")
+ name_and_id = options.dup
+
+ if name_and_id["for"]
+ name_and_id["id"] = name_and_id["for"]
+ else
+ name_and_id.delete("id")
+ end
+
+ add_default_name_and_id_for_value(tag_value, name_and_id)
+ options.delete("index")
+ options.delete("namespace")
+ options["for"] = name_and_id["id"] unless options.key?("for")
+
+ builder = LabelBuilder.new(@template_object, @object_name, @method_name, @object, tag_value)
+
+ content = if block_given?
+ @template_object.capture(builder, &block)
+ elsif @content.present?
+ @content.to_s
+ else
+ render_component(builder)
+ end
+
+ label_tag(name_and_id["id"], content, options)
+ end
+
+ private
+
+ def render_component(builder)
+ builder.translation
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/month_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/month_field.rb
new file mode 100644
index 0000000..4c0fb84
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/month_field.rb
@@ -0,0 +1,13 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class MonthField < DatetimeField # :nodoc:
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%Y-%m")
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/number_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/number_field.rb
new file mode 100644
index 0000000..4f95b1b
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/number_field.rb
@@ -0,0 +1,18 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class NumberField < TextField # :nodoc:
+ def render
+ options = @options.stringify_keys
+
+ if range = options.delete("in") || options.delete("within")
+ options.update("min" => range.min, "max" => range.max)
+ end
+
+ @options = options
+ super
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/password_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/password_field.rb
new file mode 100644
index 0000000..6099fa6
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/password_field.rb
@@ -0,0 +1,12 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class PasswordField < TextField # :nodoc:
+ def render
+ @options = {:value => nil}.merge!(@options)
+ super
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/placeholderable.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/placeholderable.rb
new file mode 100644
index 0000000..04684fe
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/placeholderable.rb
@@ -0,0 +1,22 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ module Placeholderable # :nodoc:
+ def initialize(*)
+ super
+
+ if tag_value = @options[:placeholder]
+ placeholder = tag_value if tag_value.is_a?(String)
+ method_and_value = tag_value.is_a?(TrueClass) ? @method_name : "#{@method_name}.#{tag_value}"
+
+ placeholder ||= Tags::Translator
+ .new(object, @object_name, method_and_value, "helpers.placeholder")
+ .translate
+ placeholder ||= @method_name.humanize
+ @options[:placeholder] = placeholder
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/radio_button.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/radio_button.rb
new file mode 100644
index 0000000..4849c53
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/radio_button.rb
@@ -0,0 +1,31 @@
+require 'action_view/helpers/tags/checkable'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class RadioButton < Base # :nodoc:
+ include Checkable
+
+ def initialize(object_name, method_name, template_object, tag_value, options)
+ @tag_value = tag_value
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ options = @options.stringify_keys
+ options["type"] = "radio"
+ options["value"] = @tag_value
+ options["checked"] = "checked" if input_checked?(object, options)
+ add_default_name_and_id_for_value(@tag_value, options)
+ tag("input", options)
+ end
+
+ private
+
+ def checked?(value)
+ value.to_s == @tag_value.to_s
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/range_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/range_field.rb
new file mode 100644
index 0000000..f98ae88
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/range_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class RangeField < NumberField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/search_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/search_field.rb
new file mode 100644
index 0000000..4597cec
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/search_field.rb
@@ -0,0 +1,22 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class SearchField < TextField # :nodoc:
+ def render
+ super do |options|
+ if options["autosave"]
+ if options["autosave"] == true
+ options["autosave"] = request.host.split(".").reverse.join(".")
+ end
+ options["results"] ||= 10
+ end
+
+ if options["onsearch"]
+ options["incremental"] = true unless options.has_key?("incremental")
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/select.rb
new file mode 100644
index 0000000..180900c
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/select.rb
@@ -0,0 +1,41 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class Select < Base # :nodoc:
+ def initialize(object_name, method_name, template_object, choices, options, html_options)
+ @choices = block_given? ? template_object.capture { yield || "" } : choices
+ @choices = @choices.to_a if @choices.is_a?(Range)
+
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ option_tags_options = {
+ :selected => @options.fetch(:selected) { value(@object) },
+ :disabled => @options[:disabled]
+ }
+
+ option_tags = if grouped_choices?
+ grouped_options_for_select(@choices, option_tags_options)
+ else
+ options_for_select(@choices, option_tags_options)
+ end
+
+ select_content_tag(option_tags, @options, @html_options)
+ end
+
+ private
+
+ # Grouped choices look like this:
+ #
+ # [nil, []]
+ # { nil => [] }
+ def grouped_choices?
+ !@choices.empty? && @choices.first.respond_to?(:last) && Array === @choices.first.last
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/tel_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/tel_field.rb
new file mode 100644
index 0000000..987bb9e
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/tel_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TelField < TextField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_area.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_area.rb
new file mode 100644
index 0000000..69038c1
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_area.rb
@@ -0,0 +1,22 @@
+require 'action_view/helpers/tags/placeholderable'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TextArea < Base # :nodoc:
+ include Placeholderable
+
+ def render
+ options = @options.stringify_keys
+ add_default_name_and_id(options)
+
+ if size = options.delete("size")
+ options["cols"], options["rows"] = size.split("x") if size.respond_to?(:split)
+ end
+
+ content_tag("textarea", options.delete("value") { value_before_type_cast(object) }, options)
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_field.rb
new file mode 100644
index 0000000..49fc81e
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/text_field.rb
@@ -0,0 +1,33 @@
+require 'action_view/helpers/tags/placeholderable'
+
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TextField < Base # :nodoc:
+ include Placeholderable
+
+ def render
+ options = @options.stringify_keys
+ options["size"] = options["maxlength"] unless options.key?("size")
+ options["type"] ||= field_type
+ options["value"] = options.fetch("value") { value_before_type_cast(object) } unless field_type == "file"
+ yield options if block_given?
+ add_default_name_and_id(options)
+ tag("input", options)
+ end
+
+ class << self
+ def field_type
+ @field_type ||= self.name.split("::").last.sub("Field", "").downcase
+ end
+ end
+
+ private
+
+ def field_type
+ self.class.field_type
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_field.rb
new file mode 100644
index 0000000..0e90a3a
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_field.rb
@@ -0,0 +1,13 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TimeField < DatetimeField # :nodoc:
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%T.%L")
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_select.rb
new file mode 100644
index 0000000..0b06311
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_select.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TimeSelect < DateSelect # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_zone_select.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_zone_select.rb
new file mode 100644
index 0000000..80d165e
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/time_zone_select.rb
@@ -0,0 +1,20 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class TimeZoneSelect < Base # :nodoc:
+ def initialize(object_name, method_name, template_object, priority_zones, options, html_options)
+ @priority_zones = priority_zones
+ @html_options = html_options
+
+ super(object_name, method_name, template_object, options)
+ end
+
+ def render
+ select_content_tag(
+ time_zone_options_for_select(value(@object) || @options[:default], @priority_zones, @options[:model] || ActiveSupport::TimeZone), @options, @html_options
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/translator.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/translator.rb
new file mode 100644
index 0000000..1af4c73
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/translator.rb
@@ -0,0 +1,40 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class Translator # :nodoc:
+ def initialize(object, object_name, method_and_value, scope)
+ @object_name = object_name.gsub(/\[(.*)_attributes\]\[\d+\]/, '.\1')
+ @method_and_value = method_and_value
+ @scope = scope
+ @model = object.respond_to?(:to_model) ? object.to_model : nil
+ end
+
+ def translate
+ translated_attribute = I18n.t("#{object_name}.#{method_and_value}", default: i18n_default, scope: scope).presence
+ translated_attribute || human_attribute_name
+ end
+
+ protected
+
+ attr_reader :object_name, :method_and_value, :scope, :model
+
+ private
+
+ def i18n_default
+ if model
+ key = model.model_name.i18n_key
+ ["#{key}.#{method_and_value}".to_sym, ""]
+ else
+ ""
+ end
+ end
+
+ def human_attribute_name
+ if model && model.class.respond_to?(:human_attribute_name)
+ model.class.human_attribute_name(method_and_value)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/url_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/url_field.rb
new file mode 100644
index 0000000..d763401
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/url_field.rb
@@ -0,0 +1,8 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class UrlField < TextField # :nodoc:
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/week_field.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/week_field.rb
new file mode 100644
index 0000000..5b3d049
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/tags/week_field.rb
@@ -0,0 +1,13 @@
+module ActionView
+ module Helpers
+ module Tags # :nodoc:
+ class WeekField < DatetimeField # :nodoc:
+ private
+
+ def format_date(value)
+ value.try(:strftime, "%Y-W%W")
+ end
+ end
+ end
+ end
+end
diff --git a/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/text_helper.rb b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/text_helper.rb
new file mode 100644
index 0000000..a9f1631
--- /dev/null
+++ b/builder/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.4/lib/action_view/helpers/text_helper.rb
@@ -0,0 +1,467 @@
+require 'active_support/core_ext/string/filters'
+require 'active_support/core_ext/array/extract_options'
+
+module ActionView
+ # = Action View Text Helpers
+ module Helpers #:nodoc:
+ # The TextHelper module provides a set of methods for filtering, formatting
+ # and transforming strings, which can reduce the amount of inline Ruby code in
+ # your views. These helper methods extend Action View making them callable
+ # within your template files.
+ #
+ # ==== Sanitization
+ #
+ # Most text helpers by default sanitize the given content, but do not escape it.
+ # This means HTML tags will appear in the page but all malicious code will be removed.
+ # Let's look at some examples using the +simple_format+ method:
+ #
+ # simple_format('Example')
+ # # => "Example
"
+ #
+ # simple_format('Example')
+ # # => "Example
"
+ #
+ # If you want to escape all content, you should invoke the +h+ method before
+ # calling the text helper.
+ #
+ # simple_format h('Example')
+ # # => "<a href=\"http://example.com/\">Example</a>
"
+ module TextHelper
+ extend ActiveSupport::Concern
+
+ include SanitizeHelper
+ include TagHelper
+ include OutputSafetyHelper
+
+ # The preferred method of outputting text in your views is to use the
+ # <%= "text" %> eRuby syntax. The regular _puts_ and _print_ methods
+ # do not operate as expected in an eRuby code block. If you absolutely must
+ # output text within a non-output code block (i.e., <% %>), you can use the concat method.
+ #
+ # <%
+ # concat "hello"
+ # # is the equivalent of <%= "hello" %>
+ #
+ # if logged_in
+ # concat "Logged in!"
+ # else
+ # concat link_to('login', action: :login)
+ # end
+ # # will either display "Logged in!" or a login link
+ # %>
+ def concat(string)
+ output_buffer << string
+ end
+
+ def safe_concat(string)
+ output_buffer.respond_to?(:safe_concat) ? output_buffer.safe_concat(string) : concat(string)
+ end
+
+ # Truncates a given +text+ after a given :length if +text+ is longer than :length
+ # (defaults to 30). The last characters will be replaced with the :omission (defaults to "...")
+ # for a total length not exceeding :length.
+ #
+ # Pass a :separator to truncate +text+ at a natural break.
+ #
+ # Pass a block if you want to show extra content when the text is truncated.
+ #
+ # The result is marked as HTML-safe, but it is escaped by default, unless :escape is
+ # +false+. Care should be taken if +text+ contains HTML tags or entities, because truncation
+ # may produce invalid HTML (such as unbalanced or incomplete tags).
+ #
+ # truncate("Once upon a time in a world far far away")
+ # # => "Once upon a time in a world..."
+ #
+ # truncate("Once upon a time in a world far far away", length: 17)
+ # # => "Once upon a ti..."
+ #
+ # truncate("Once upon a time in a world far far away", length: 17, separator: ' ')
+ # # => "Once upon a..."
+ #
+ # truncate("And they found that many people were sleeping better.", length: 25, omission: '... (continued)')
+ # # => "And they f... (continued)"
+ #
+ # truncate("Once upon a time in a world far far away
")
+ # # => "<p>Once upon a time in a wo..."
+ #
+ # truncate("Once upon a time in a world far far away
", escape: false)
+ # # => "Once upon a time in a wo..."
+ #
+ # truncate("Once upon a time in a world far far away") { link_to "Continue", "#" }
+ # # => "Once upon a time in a wo...Continue"
+ def truncate(text, options = {}, &block)
+ if text
+ length = options.fetch(:length, 30)
+
+ content = text.truncate(length, options)
+ content = options[:escape] == false ? content.html_safe : ERB::Util.html_escape(content)
+ content << capture(&block) if block_given? && text.length > length
+ content
+ end
+ end
+
+ # Highlights one or more +phrases+ everywhere in +text+ by inserting it into
+ # a :highlighter string. The highlighter can be specialized by passing :highlighter
+ # as a single-quoted string with \1 where the phrase is to be inserted (defaults to
+ # '\1') or passing a block that receives each matched term.
+ #
+ # highlight('You searched for: rails', 'rails')
+ # # => You searched for: rails
+ #
+ # highlight('You searched for: rails', /for|rails/)
+ # # => You searched for: rails
+ #
+ # highlight('You searched for: ruby, rails, dhh', 'actionpack')
+ # # => You searched for: ruby, rails, dhh
+ #
+ # highlight('You searched for: rails', ['for', 'rails'], highlighter: '\1')
+ # # => You searched for: rails
+ #
+ # highlight('You searched for: rails', 'rails', highlighter: '\1')
+ # # => You searched for: rails
+ #
+ # highlight('You searched for: rails', 'rails') { |match| link_to(search_path(q: match, match)) }
+ # # => You searched for: rails
+ def highlight(text, phrases, options = {})
+ text = sanitize(text) if options.fetch(:sanitize, true)
+
+ if text.blank? || phrases.blank?
+ text || ""
+ else
+ match = Array(phrases).map do |p|
+ Regexp === p ? p.to_s : Regexp.escape(p)
+ end.join('|')
+
+ if block_given?
+ text.gsub(/(#{match})(?![^<]*?>)/i) { |found| yield found }
+ else
+ highlighter = options.fetch(:highlighter, '\1')
+ text.gsub(/(#{match})(?![^<]*?>)/i, highlighter)
+ end
+ end.html_safe
+ end
+
+ # Extracts an excerpt from +text+ that matches the first instance of +phrase+.
+ # The :radius option expands the excerpt on each side of the first occurrence of +phrase+ by the number of characters
+ # defined in :radius (which defaults to 100). If the excerpt radius overflows the beginning or end of the +text+,
+ # then the :omission option (which defaults to "...") will be prepended/appended accordingly. Use the
+ # :separator option to choose the delimitation. The resulting string will be stripped in any case. If the +phrase+
+ # isn't found, nil is returned.
+ #
+ # excerpt('This is an example', 'an', radius: 5)
+ # # => ...s is an exam...
+ #
+ # excerpt('This is an example', 'is', radius: 5)
+ # # => This is a...
+ #
+ # excerpt('This is an example', 'is')
+ # # => This is an example
+ #
+ # excerpt('This next thing is an example', 'ex', radius: 2)
+ # # => ...next...
+ #
+ # excerpt('This is also an example', 'an', radius: 8, omission: ' ')
+ # # => is also an example
+ #
+ # excerpt('This is a very beautiful morning', 'very', separator: ' ', radius: 1)
+ # # => ...a very beautiful...
+ def excerpt(text, phrase, options = {})
+ return unless text && phrase
+
+ separator = options.fetch(:separator, nil) || ""
+ case phrase
+ when Regexp
+ regex = phrase
+ else
+ regex = /#{Regexp.escape(phrase)}/i
+ end
+
+ return unless matches = text.match(regex)
+ phrase = matches[0]
+
+ unless separator.empty?
+ text.split(separator).each do |value|
+ if value.match(regex)
+ regex = phrase = value
+ break
+ end
+ end
+ end
+
+ first_part, second_part = text.split(phrase, 2)
+
+ prefix, first_part = cut_excerpt_part(:first, first_part, separator, options)
+ postfix, second_part = cut_excerpt_part(:second, second_part, separator, options)
+
+ affix = [first_part, separator, phrase, separator, second_part].join.strip
+ [prefix, affix, postfix].join
+ end
+
+ # Attempts to pluralize the +singular+ word unless +count+ is 1. If
+ # +plural+ is supplied, it will use that when count is > 1, otherwise
+ # it will use the Inflector to determine the plural form.
+ #
+ # pluralize(1, 'person')
+ # # => 1 person
+ #
+ # pluralize(2, 'person')
+ # # => 2 people
+ #
+ # pluralize(3, 'person', 'users')
+ # # => 3 users
+ #
+ # pluralize(0, 'person')
+ # # => 0 people
+ def pluralize(count, singular, plural = nil)
+ word = if (count == 1 || count =~ /^1(\.0+)?$/)
+ singular
+ else
+ plural || singular.pluralize
+ end
+
+ "#{count || 0} #{word}"
+ end
+
+ # Wraps the +text+ into lines no longer than +line_width+ width. This method
+ # breaks on the first whitespace character that does not exceed +line_width+
+ # (which is 80 by default).
+ #
+ # word_wrap('Once upon a time')
+ # # => Once upon a time
+ #
+ # word_wrap('Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding a successor to the throne turned out to be more trouble than anyone could have imagined...')
+ # # => Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding\na successor to the throne turned out to be more trouble than anyone could have\nimagined...
+ #
+ # word_wrap('Once upon a time', line_width: 8)
+ # # => Once\nupon a\ntime
+ #
+ # word_wrap('Once upon a time', line_width: 1)
+ # # => Once\nupon\na\ntime
+ def word_wrap(text, options = {})
+ line_width = options.fetch(:line_width, 80)
+
+ text.split("\n").collect! do |line|
+ line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line
+ end * "\n"
+ end
+
+ # Returns +text+ transformed into HTML using simple formatting rules.
+ # Two or more consecutive newlines(\n\n) are considered as a
+ # paragraph and wrapped in