jsus 0.2.5 → 0.2.6

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.
data/lib/jsus/tree.rb DELETED
@@ -1,124 +0,0 @@
1
- module Jsus
2
- class Tree
3
- PATH_SEPARATOR = "/"
4
-
5
- # Utility functions
6
- def self.get_path_components(path)
7
- raise "Path should start with root (got: #{path})" unless path && path[0,1] == PATH_SEPARATOR
8
- path = path.dup
9
- path[0,1] = ""
10
- path.split(PATH_SEPARATOR)
11
- end
12
-
13
- def self.path_from_components(components)
14
- "#{PATH_SEPARATOR}#{components.join(PATH_SEPARATOR)}"
15
- end
16
-
17
-
18
- class Node
19
- attr_accessor :value
20
- attr_accessor :parent
21
- attr_accessor :path_components
22
-
23
- def initialize(full_path, value = nil)
24
- self.full_path = full_path
25
- self.value = value
26
- end
27
-
28
- attr_reader :full_path
29
- attr_reader :name
30
- def full_path=(full_path)
31
- @full_path = full_path
32
- @path_components = Tree.get_path_components(full_path)
33
- @name = @path_components[-1]
34
- end
35
-
36
- def children
37
- @children ||= []
38
- end
39
-
40
- def find_child(name)
41
- children.detect {|child| child.name == name }
42
- end
43
-
44
- def create_child(name, value = nil)
45
- full_path = Tree.path_from_components(path_components + [name])
46
- node = Node.new(full_path, value)
47
- children << node
48
- node.parent = self
49
- node
50
- end
51
-
52
- def find_or_create_child(name, value = nil)
53
- find_child(name) || create_child(name, value)
54
- end
55
-
56
- def find_children_matching(pathspec)
57
- case pathspec
58
- when "**"
59
- [self] + children.select {|child| child.has_children? }
60
- when /\*/
61
- regexp = Regexp.new("^" + Regexp.escape(pathspec).gsub("\\*", ".*") + "$")
62
- children.select {|child| !child.has_children? && child.name =~ regexp }
63
- else
64
- [find_child(pathspec)].compact
65
- end
66
- end
67
-
68
- def has_children?
69
- !children.empty?
70
- end
71
- end
72
-
73
-
74
- def root
75
- @root ||= Node.new("/", nil)
76
- end
77
-
78
- def [](path)
79
- path_components = self.class.get_path_components(path)
80
- path_components.inject(root) do |result, component|
81
- if result
82
- result.find_child(component)
83
- end
84
- end
85
- end
86
-
87
- def glob(pathspec)
88
- self.class.get_path_components(pathspec).inject([root]) do |nodes, component|
89
- nodes.map {|node| node.find_children_matching(component) }.flatten
90
- end
91
- end
92
-
93
- def insert(full_path, value = nil)
94
- node = create_all_nodes_if_needed(full_path)
95
- node.value = value
96
- node
97
- end
98
- alias_method :[]=, :insert
99
-
100
- def traverse(all_nodes = false)
101
- node_list = [root]
102
- while !node_list.empty?
103
- node = node_list.shift
104
- yield node if all_nodes || !node.has_children?
105
- node.children.each {|child| node_list << child }
106
- end
107
- end
108
-
109
- def leaves(only_with_value = true)
110
- result = []
111
- traverse {|node| result << node if !only_with_value || node.value }
112
- result
113
- end
114
-
115
-
116
- def create_all_nodes_if_needed(full_path)
117
- self.class.get_path_components(full_path).inject(root) do |result, component|
118
- result.find_or_create_child(component)
119
- end
120
- end
121
-
122
- end
123
-
124
- end
@@ -1,2 +0,0 @@
1
- require 'jsus/validator/base'
2
- require 'jsus/validator/mooforge'
@@ -1,38 +0,0 @@
1
- module Jsus
2
- module Validator
3
- class Base
4
- def initialize(pool_or_array_or_container)
5
- self.source_files = pool_or_array_or_container
6
- end
7
-
8
- def source_files
9
- @source_files ||= []
10
- end
11
- alias_method :sources, :source_files
12
-
13
- def source_files=(pool_or_array_or_container)
14
- case pool_or_array_or_container
15
- when Pool
16
- @source_files = pool_or_array_or_container.sources.to_a
17
- when Array
18
- @source_files = pool_or_array_or_container
19
- when Container
20
- @source_files = pool_or_array_or_container.to_a
21
- end
22
- end
23
- alias_method :sources=, :source_files=
24
-
25
- def validate
26
- validation_errors.empty?
27
- end
28
-
29
- def validation_errors
30
- []
31
- end
32
-
33
- def self.validate(*args)
34
- new(*args).validate
35
- end
36
- end
37
- end
38
- end
@@ -1,19 +0,0 @@
1
- module Jsus
2
- module Validator
3
- class Mooforge < Base
4
- def validation_errors
5
- @validation_errors ||= sources.inject([]) do |result, sf|
6
- if !sf.header
7
- result << "#{sf.filename} is missing header"
8
- elsif !sf.header["authors"]
9
- result << "#{sf.filename} is missing authors"
10
- elsif !sf.header["license"]
11
- result << "#{sf.filename} is missing license"
12
- else
13
- result
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end