yamljam 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ if !ARGV[0] || ARGV[0] == "--help"
7
7
  puts "Creates a <directory>.yml file containing the keys from all yml files found in <directory>. Does not work recursively yet!"
8
8
  else
9
9
  begin
10
- Yamljam::Jammer.new.jam(Dir.getwd, ARGV[0])
10
+ Yamljam::Jammer.new.jam(ARGV[0])
11
11
  rescue Exception => ex
12
12
  puts "failed due to exception: #{ex.class}! message was #{ex.message}"
13
13
  end
@@ -3,5 +3,5 @@ require "yamljam/version"
3
3
  module Yamljam
4
4
  require 'yaml'
5
5
 
6
- require File.join("yamljam", "concatenator")
6
+ require File.join("yamljam", "jammer")
7
7
  end
@@ -0,0 +1,52 @@
1
+ module Yamljam
2
+ class Jammer
3
+ def merged_hash
4
+ @hash ||= {}
5
+ end
6
+
7
+ def write_output(output_hashmap, output_file)
8
+ begin
9
+ File.open(output_file, 'w') do |f|
10
+ f.puts("# Generated by Yamljam. Do not directly edit this file.")
11
+ f.write(output_hashmap.to_yaml)
12
+ end
13
+ rescue Exception => ex # if it's any solace I cringed when I wrote that
14
+ puts "hit exception when writing output file! #{ex.class} #{ex.message} #{ex.backtrace}"
15
+ raise ex
16
+ end
17
+ end
18
+
19
+ def merge_files(input_files, namespace)
20
+ {namespace => input_files.map{|input_file| make_hashmap(input_file)}.reduce({}, &:merge)}
21
+ end
22
+
23
+ def make_hashmap(input_file)
24
+ base_hashmap = YAML::load_file(input_file)
25
+ end
26
+
27
+ def jam(input_directory_name)
28
+ write_output(jam_recursive(input_directory_name), input_directory_name + ".yml")
29
+ end
30
+
31
+ def jam_recursive(input_directory_name)
32
+ Dir.chdir(input_directory_name) do
33
+ directories = Dir.entries('.').reject{|entry| !File.directory?(entry) || entry == '.' || entry == '..'}
34
+ yaml_files = Dir.entries('.').reject{|entry| File.directory?(entry) || !is_yaml?(entry)}
35
+ merged_yaml = merge_files(yaml_files, input_directory_name)
36
+ more_yamls = directories.map{|directory| jam_recursive(directory)}
37
+
38
+ total_merged_yaml = {input_directory_name => more_yamls.reduce(merged_yaml[input_directory_name], &:merge)}
39
+ return total_merged_yaml
40
+ end
41
+ end
42
+
43
+ def name_of_dotdot
44
+ # is there seriously not a better way to do this?
45
+ Dir.chdir(".."){File.split(Dir.getwd).last}
46
+ end
47
+
48
+ def is_yaml?(filename)
49
+ %w[yml yaml].include?(filename.split(".").last)
50
+ end
51
+ end
52
+ end
@@ -1,3 +1,3 @@
1
1
  module Yamljam
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -20,6 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  # specify any dependencies here; for example:
23
- # s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rspec"
24
24
  # s.add_runtime_dependency "rest-client"
25
25
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yamljam
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bill Abney
@@ -15,9 +15,22 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-06-12 00:00:00 Z
19
- dependencies: []
20
-
18
+ date: 2012-06-13 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :development
33
+ version_requirements: *id001
21
34
  description: concatenates multiple yaml files from a subdirectory into one yaml file. Useful for splitting up and re-joining en.yml
22
35
  email:
23
36
  - bill.abney@gmail.com
@@ -34,7 +47,7 @@ files:
34
47
  - Rakefile
35
48
  - bin/yamljam
36
49
  - lib/yamljam.rb
37
- - lib/yamljam/concatenator.rb
50
+ - lib/yamljam/jammer.rb
38
51
  - lib/yamljam/version.rb
39
52
  - yamljam.gemspec
40
53
  homepage: ""
@@ -1,41 +0,0 @@
1
- module Yamljam
2
- class Jammer
3
- def concatenate(input_files, output_file)
4
- output_hashmap = merge_files(input_files)
5
- write_output(output_hashmap, output_file)
6
- end
7
-
8
- def write_output(output_hashmap, output_file)
9
- begin
10
- File.open(output_file, 'w') do |f|
11
- f.puts("# Generated by Yamljam. Do not directly edit this file.")
12
- f.write(output_hashmap.to_yaml)
13
- end
14
- rescue Exception => ex # if it's any solace I cringed when I wrote that
15
- puts "hit exception when writing output file! #{ex.class} #{ex.message} #{ex.backtrace}"
16
- raise ex
17
- end
18
- end
19
-
20
- def merge_files(input_files)
21
- {@namespace => input_files.map{|input_file| make_hashmap(input_file)}.reduce({}, &:merge)}
22
- end
23
-
24
- def make_hashmap(input_file)
25
- base_hashmap = YAML::load_file(input_file)
26
- end
27
-
28
- def jam(input_directory_path, namespace)
29
- # input directory will contain #{namespace}.yml (output file, which will be blown away)
30
- # and a directory called #{namespace}. All files in the #{namespace} directory will be
31
- # assumed to be yaml input files if they end in .yml or .yaml, and ignored otherwise.
32
- @namespace = namespace
33
- input_directory_path ||= Dir.getwd
34
- input_file_dir = File.join(input_directory_path, namespace)
35
- Dir.chdir(input_file_dir) do
36
- input_files = Dir.glob("*.yaml") + Dir.glob("*.yml")
37
- concatenate(input_files, File.join("..", namespace + ".yml"))
38
- end
39
- end
40
- end
41
- end