Class: AddressComposer
- Inherits:
-
Object
- Object
- AddressComposer
- Defined in:
- lib/address_composer.rb,
lib/address_composer/version.rb
Defined Under Namespace
Classes: Template
Constant Summary collapse
- GEM_ROOT =
Gem::Specification.find_by_name("address_composer").gem_dir
- Templates =
YAML.safe_load(IO.read(File.join(GEM_ROOT, "address-formatting", "conf", "countries", "worldwide.yaml")), aliases: true)
- ComponentsList =
Psych.load_stream(File.read(File.join(GEM_ROOT,"address-formatting", "conf","components.yaml")))
- AllComponents =
ComponentsList.map { |h| h["name"] } + ComponentsList.flat_map { |h| h["aliases"] }.compact
- StateCodes =
YAML.safe_load(IO.read(File.join(GEM_ROOT, "address-formatting", "conf", "state_codes.yaml")), aliases: true)
- CountyCodes =
YAML.safe_load(IO.read(File.join(GEM_ROOT, "address-formatting", "conf", "county_codes.yaml")), aliases: true)
- CountryToLanguage =
begin c2l = YAML.safe_load(IO.read(File.join(GEM_ROOT, "address-formatting", "conf", "country2lang.yaml")), aliases: true) c2l.transform_values! do |v| v.split(",") end c2l.freeze end
- Abbreviations =
begin abbr = {} Dir.each_child(File.join(GEM_ROOT, "address-formatting", "conf", "abbreviations")) do |file| country_code, = file.split(".", 2) abbr[country_code] = YAML.safe_load(IO.read(File.join(GEM_ROOT, "address-formatting", "conf", "abbreviations", file)), aliases: true) end abbr.freeze end
- VERSION =
"2.0.0".freeze
Instance Attribute Summary collapse
-
#components ⇒ Object
Returns the value of attribute components.
Class Method Summary collapse
Instance Method Summary collapse
- #compose ⇒ Object
-
#initialize(components) ⇒ AddressComposer
constructor
A new instance of AddressComposer.
Constructor Details
#initialize(components) ⇒ AddressComposer
Returns a new instance of AddressComposer.
43 44 45 46 47 48 |
# File 'lib/address_composer.rb', line 43 def initialize(components) self.components = components.dup @should_abbreviate = self.components.delete("should_abbreviate") || false normalize_components end |
Instance Attribute Details
#components ⇒ Object
Returns the value of attribute components.
41 42 43 |
# File 'lib/address_composer.rb', line 41 def components @components end |
Class Method Details
.compose(components) ⇒ Object
37 38 39 |
# File 'lib/address_composer.rb', line 37 def self.compose(components) new(components).compose end |
Instance Method Details
#compose ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/address_composer.rb', line 50 def compose if components["country_code"] result = Template.render(template, components).squeeze("\n").lstrip.gsub(/\s*\n\s*/, "\n") result = post_format_replace(result) else result = components.values.join(" ") end clean(result) end |