Module: Ginny
- Defined in:
- lib/ginny.rb,
lib/ginny/mod.rb,
lib/ginny/load.rb,
lib/ginny/error.rb,
lib/ginny/version.rb,
lib/ginny/models/attr.rb,
lib/ginny/models/func.rb,
lib/ginny/models/class.rb,
lib/ginny/models/param.rb
Overview
Ruby code generator.
Defined Under Namespace
Classes: Attr, Class, Error, Func, Param
Constant Summary collapse
- QUOTE =
'"'.freeze
- INDENT =
" ".freeze
- VERSION =
"0.6.3".freeze
Class Method Summary collapse
- .get_extension(path) ⇒ String
-
.load_file(path) ⇒ Hash<Symbol>
Load data from a YAML or JSON file.
-
.load_json(path) ⇒ Hash<Symbol>
Load data from a JSON file.
-
.load_yaml(path) ⇒ Hash<Symbol>
Load data from a YAML file.
-
.mod(body, *names) ⇒ String
Used to generate a module.
Class Method Details
.get_extension(path) ⇒ String
25 26 27 28 |
# File 'lib/ginny/load.rb', line 25 def self.get_extension(path) file = Pathname.new(path) return file.extname.downcase end |
.load_file(path) ⇒ Hash<Symbol>
Load data from a YAML or JSON file.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ginny/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 Ginny::Error "invalid file type" end end |
.load_json(path) ⇒ Hash<Symbol>
Load data from a JSON file.
19 20 21 |
# File 'lib/ginny/load.rb', line 19 def self.load_json(path) return JSON.parse(File.read(File.(path)), symbolize_names: true) end |
.load_yaml(path) ⇒ Hash<Symbol>
Load data from a YAML file.
11 12 13 |
# File 'lib/ginny/load.rb', line 11 def self.load_yaml(path) return Coolkit.symbolize_keys(YAML.load_file(File.(path))) end |
.mod(body, *names) ⇒ String
Used to generate a module.
More accurately, wrap the body
(first argument) with any following module definitions (additional arguments).
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ginny/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 |