cookbook-reader 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c20e1a28a6e11088e454f1a6d3737c86c429a200
4
+ data.tar.gz: 081ebe0411dd0bc89e8c534e71f986711161f456
5
+ SHA512:
6
+ metadata.gz: c5925023c2a9e33492b01956ddb5e7f154e7d52ce989bbfe50c6d558e4063ae0c5554c0097b10573ef84bf9c17cd49b12241750da6918eaafe2592a327efe822
7
+ data.tar.gz: ec431415fa83ca5222f7bbee205714e63d2f28ebc3434e24d1b90828e2d472c0bb0577e4dada5e48ce46e55977cc78d545c18085ed0425aeaa41bf8f36b5fed8
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ cookbook-reader
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.0
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ rvm:
2
+ - 2.1.0
3
+ script: "rake spec"
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,7 @@
1
+ [![Build Status](https://secure.travis-ci.org/keviny22/cookbook-reader.png)](http://travis-ci.org/keviny22/cookbook-reader)
2
+
3
+
4
+ cookbook-reader
5
+ ===============
6
+
7
+ A gem for reading a cookbook, for learning Ruby only
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ desc 'Run specs'
5
+
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.rspec_opts = %w(--color)
8
+ end
@@ -0,0 +1,5 @@
1
+ #! /usr/bin/ruby
2
+ require 'cookbook-reader/parser'
3
+ parser = CookbookReader::Parser.new(ARGV)
4
+ parser.parse
5
+ parser.display_data
@@ -0,0 +1,37 @@
1
+ require 'optparse'
2
+
3
+ module CookbookReader
4
+ class Options
5
+
6
+ attr_reader :path_to_search
7
+
8
+ def initialize(argv)
9
+ parse(argv)
10
+ end
11
+
12
+ private
13
+
14
+ def parse(argv)
15
+ OptionParser.new do |opts|
16
+ opts.banner = "Usage: cookbook-reader --path path ..."
17
+
18
+ opts.on("-p", "--path path", String, "Path to search") do |path|
19
+ @path_to_search = path
20
+ end
21
+
22
+ opts.on("-h", "--help", "Show this message") do
23
+ puts opts
24
+ exit
25
+ end
26
+
27
+ begin
28
+ argv = ["-h"] if argv.empty?
29
+ opts.parse!(argv)
30
+ rescue OptionParser::ParseError => e
31
+ STDERR.puts e.message, "\n", opts
32
+ exit(-1)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,82 @@
1
+ require_relative 'options'
2
+ module CookbookReader
3
+ class Parser
4
+ def initialize(argv)
5
+ @options = Options.new(argv)
6
+ @top_list = []
7
+ end
8
+
9
+ def run
10
+ finder = Finder.from_file(@options.dictionary)
11
+ @options.words_to_find.each do |word|
12
+ anagrams = finder.lookup(word)
13
+ if anagrams
14
+ puts "Anagrams of #{word}: #{anagrams.join(', ')}"
15
+ else
16
+ puts "No anagrams of #{word} in #{@options.dictionary}"
17
+ end
18
+ end
19
+ end
20
+
21
+ def parse
22
+ @metadata_list = Array.new
23
+ Dir.glob("#{@options.path_to_search}/**/metadata.rb") do |filename|
24
+ @metadata_list.push read_file filename
25
+
26
+
27
+ end
28
+ end
29
+
30
+ def display_data
31
+ #pp @top_list
32
+
33
+ @top_list.each do |element|
34
+ puts "Cookbook: #{element['name']}\n"
35
+ puts " Dependancies:"
36
+ element['depends'].each do |name, version|
37
+ puts " #{name}, #{version}\n"
38
+ end
39
+ puts "\n"
40
+ end
41
+ end
42
+
43
+ private
44
+ def read_file(filename)
45
+ @hash = {}
46
+
47
+ @depends_list = {}
48
+ File.open(filename) do |fp|
49
+ fp.each do |line|
50
+ key, value = line.chomp.split(" ")
51
+ key.strip!
52
+ value.strip!
53
+ key = key.chomp('"').reverse.chomp('"').reverse
54
+ value = value.chomp('"').reverse.chomp('"').reverse
55
+
56
+ if key =~ /depends/
57
+ @hash[key] = add_dependencies(line)
58
+ else
59
+ @hash[key] = value
60
+ end
61
+ end
62
+ end
63
+ @top_list.push @hash
64
+
65
+ end
66
+
67
+ def add_dependencies(line)
68
+ line.slice! "depends "
69
+ k, v = line.chomp.split(",")
70
+ v = "none" if v.nil?
71
+ k.strip!
72
+ v.strip!
73
+ v = v.chomp('"').reverse.chomp('"').reverse
74
+ v = v.chomp('"').reverse.chomp('"').reverse
75
+ k = k.chomp('"').reverse.chomp('"').reverse
76
+ k.strip!
77
+ v.strip!
78
+ @depends_list[k] = v
79
+ @depends_list
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,9 @@
1
+ require "../lib/cookbook-reader/options"
2
+
3
+ describe CookbookReader::Options do
4
+
5
+ it "executes a block and returns a string" do
6
+ pending
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require "../lib/cookbook-reader/parser"
2
+
3
+ describe CookbookReader::Parser do
4
+
5
+ it "executes a block and returns a string" do
6
+ pending
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cookbook-reader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Young
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem that parses cookbook metadata
14
+ email: kevin@young.net
15
+ executables:
16
+ - cookbook-reader
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".ruby-gemset"
21
+ - ".ruby-version"
22
+ - ".travis.yml"
23
+ - Gemfile
24
+ - README.md
25
+ - Rakefile
26
+ - bin/cookbook-reader
27
+ - lib/cookbook-reader/options.rb
28
+ - lib/cookbook-reader/parser.rb
29
+ - spec/options_spec.rb
30
+ - spec/parser_spec.rb
31
+ homepage: http://rubygems.org/gems/cookbook-reader
32
+ licenses:
33
+ - MIT
34
+ metadata: {}
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project:
51
+ rubygems_version: 2.2.0
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: cookbook version parser
55
+ test_files:
56
+ - spec/options_spec.rb
57
+ - spec/parser_spec.rb