module JavaProperties::Generating::Generator
This module allows generating the content of a properties file base on a {Properties} object (or any other hash like structure)
@example
Generator.generate({:item => "something ה"}) => "item=something \u05d4"
Constants
- DEFAULT_OPTIONS
Default options @return [Hash]
- KEY_VALUE_SEPARATOR
Character used for key-value separation @return [String]
Public Class Methods
generate(properties, options = {})
click to toggle source
Generates a properties file content based on a hash @param properties [Properties] or simple hash @param options [Hash] @option options skip_encode_unicode [Boolean] Skip unicode encoding @option options skip_encode_separators [Boolean] Skip seperators encoding @option options skip_encode_special_chars [Boolean] Skip special char encoding @return [String]
# File lib/java-properties/generating/generator.rb, line 29 def self.generate(properties, options = {}) options = DEFAULT_OPTIONS.merge(options) lines = [] properties.each do |k, v| build_group(k, v, lines, options) end lines.join("\n") end
Private Class Methods
build_group(key, current_nest, lines, options)
click to toggle source
# File lib/java-properties/generating/generator.rb, line 40 def self.build_group(key, current_nest, lines, options) if current_nest.class == Hash current_nest.each do |k, v| build_group(key + "." + k, v, lines, options) end else encoded_key = Encoding.encode!(key.to_s.dup, *encoding_skips(false, options)) encoded_value = Encoding.encode!(current_nest.to_s.dup, *encoding_skips(true, options)) lines << encoded_key + KEY_VALUE_SEPARATOR + encoded_value end end
encoding_skips(is_value, options)
click to toggle source
# File lib/java-properties/generating/generator.rb, line 53 def self.encoding_skips(is_value, options) skips = [] skips << Encoding::SKIP_SEPARATORS if is_value || options[:skip_encode_separators] skips << Encoding::SKIP_UNICODE if options[:skip_encode_unicode] skips << Encoding::SKIP_SPECIAL_CHARS if options[:skip_encode_special_chars] skips end