module FoodTruck
Ruby code generator.
Constants
- QUOTE
- VERSION
Public Class Methods
@param path [String] Path of the file to determine the extension of. @return [String]
# File lib/food_truck/load.rb, line 25 def self.get_extension(path) file = Pathname.new(path) return file.extname.downcase end
Load data from a YAML or JSON file.
@param path [String] @return [Hash<Symbol>]
# File lib/food_truck/load.rb, line 34 def self.load_file(path) case Pathname.new(path).extname.downcase when ".yml", ".yaml" return self.load_yaml(path) when ".json" return self.load_json(path) else raise FoodTruck::Error "invalid file type" end end
Load data from a JSON file.
@param path [String] @return [Hash<Symbol>]
# File lib/food_truck/load.rb, line 19 def self.load_json(path) return JSON.parse(File.read(File.expand_path(path)), symbolize_names: true) end
Load data from a YAML file.
@param path [String] @return [Hash<Symbol>]
# File lib/food_truck/load.rb, line 11 def self.load_yaml(path) return FoodTruck.symbolize_keys(YAML.load_file(File.expand_path(path))) end
Used to generate a [module](ruby-doc.org/core-2.6.5/doc/syntax/modules_and_classes_rdoc.html).
More accurately, wrap the `body` (first argument) with any following module definitions (additional arguments).
@example
FoodTruck.mod("puts('Hello World')", "Level1", "Level2") #=> module Level1 module Level2 puts('Hello World') end end
@param body [String] Name of module namespaces. @param names [String,Array<String>] Name of module namespaces. @return [String]
# File lib/food_truck/mod.rb, line 18 def self.mod(body, *names) names.flatten! count = names.length return body unless count.positive?() level = 0 head = [] tail = [] names.each do |name| head.push("module #{name}".indent(level)) tail.unshift("end".indent(level)) level += 2 end return (head + [body&.indent(level)] + tail).compact.join("\n") end
Recursively convert keys in a Hash or Array to symbols.
See:
-
[original code](avdi.codes/recursively-symbolize-keys/)
-
[array support](gist.github.com/neektza/8585746)
@param arg [Hash,Array] @return [Hash,Array]
# File lib/food_truck/symbolize.rb, line 10 def self.symbolize_keys(arg) if arg.is_a?(Hash) arg.inject({}) do |result, (key, value)| new_key = case key when String then key.to_sym() else key end new_value = case value when Hash then symbolize_keys(value) when Array then symbolize_keys(value) else value end result[new_key] = new_value result end elsif arg.is_a?(Array) arg.map { |e| symbolize_keys(e) } else arg end end