jsus 0.1.20 → 0.1.21

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/CHANGELOG CHANGED
@@ -1,4 +1,7 @@
1
1
  = Jsus Changelog
2
+ == Version 0.1.21
3
+ * Support for wildcards in requires statements (beware, something could break)
4
+
2
5
  == Version 0.1.20
3
6
  * Better integration for murdoc (factored it into class Jsus::Documenter)
4
7
  * Tree structure for future reuse
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.20
1
+ 0.1.21
data/bin/jsus CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  begin
4
4
  require 'jsus'
5
5
  rescue LoadError
6
- $: << "./lib"
6
+ $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
7
7
  require "jsus"
8
8
  end
9
9
 
@@ -65,6 +65,13 @@ Choice.options do
65
65
 
66
66
  end
67
67
 
68
+ option "no_syntax_highlight", :required => false do
69
+ default false
70
+ long "--no-syntax-highlight"
71
+ desc "Disable syntax highlighting in murdoc. Greatly increases docs generation speed. " <<
72
+ "Note: This option won't have any effect unless you have Pygments installed."
73
+ end
74
+
68
75
  option "verbose", :required => false do
69
76
  default false
70
77
  short "-v"
@@ -107,7 +114,7 @@ end
107
114
 
108
115
  # Generate documentation
109
116
  unless Choice.choices[:docs_classes].empty?
110
- documenter = Jsus::Documenter.new
117
+ documenter = Jsus::Documenter.new(:highlight_source => !Choice.choices[:no_syntax_highlight])
111
118
  package.source_files.each {|source| documenter << source }
112
119
  pool.sources.each {|source| documenter << source } if pool
113
120
  documenter.only(Choice.choices[:docs_classes]).generate(Choice.choices[:output_directory] + "/docs")
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jsus}
8
- s.version = "0.1.20"
8
+ s.version = "0.1.21"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mark Abramov"]
12
- s.date = %q{2010-11-27}
12
+ s.date = %q{2010-11-28}
13
13
  s.default_executable = %q{jsus}
14
14
  s.description = %q{Javascript packager and dependency resolver}
15
15
  s.email = %q{markizko@gmail.com}
@@ -57,6 +57,12 @@ Gem::Specification.new do |s|
57
57
  "spec/data/ChainDependencies/app/javascripts/Hash/package.yml",
58
58
  "spec/data/ChainDependencies/app/javascripts/Mash/Source/Mash.js",
59
59
  "spec/data/ChainDependencies/app/javascripts/Mash/package.yml",
60
+ "spec/data/DependenciesWildcards/app/javascripts/Class/Source/Class.js",
61
+ "spec/data/DependenciesWildcards/app/javascripts/Class/package.yml",
62
+ "spec/data/DependenciesWildcards/app/javascripts/Hash/Source/Hash.js",
63
+ "spec/data/DependenciesWildcards/app/javascripts/Hash/package.yml",
64
+ "spec/data/DependenciesWildcards/app/javascripts/Mash/Source/Mash.js",
65
+ "spec/data/DependenciesWildcards/app/javascripts/Mash/package.yml",
60
66
  "spec/data/Extensions/app/javascripts/Core/Source/Class.js",
61
67
  "spec/data/Extensions/app/javascripts/Core/package.yml",
62
68
  "spec/data/Extensions/app/javascripts/Orwik/Extensions/Class.js",
@@ -1,7 +1,10 @@
1
1
  module Jsus
2
2
  class Documenter
3
- def initialize
3
+ attr_accessor :options
4
+
5
+ def initialize(options = {:highlight_source => true})
4
6
  require "murdoc"
7
+ self.options = options
5
8
  rescue LoadError
6
9
  raise "You should install murdoc gem in order to produce documentation"
7
10
  end
@@ -30,7 +33,7 @@ module Jsus
30
33
  def create_documentation_for_source(source, template)
31
34
  skipped_lines = 0
32
35
  content = source.original_content.gsub(/\A\s*\/\*.*?\*\//m) {|w| skipped_lines += w.split("\n").size; "" }
33
- annotator = Murdoc::Annotator.new(content, :javascript, :highlight_source => true)
36
+ annotator = Murdoc::Annotator.new(content, :javascript, options)
34
37
  Murdoc::Formatter.new(template).render(:paragraphs => annotator.paragraphs, :header => source.header, :source => source, :skipped_lines => skipped_lines)
35
38
  end
36
39
 
@@ -105,7 +105,8 @@ module Jsus
105
105
  def <<(source_or_sources_or_package)
106
106
  case
107
107
  when source_or_sources_or_package.kind_of?(SourceFile)
108
- source = source_or_sources_or_package
108
+ source = source_or_sources_or_package
109
+ add_source_to_trees(source)
109
110
  sources << source
110
111
  if source.extends
111
112
  extensions_map[source.extends] ||= []
@@ -156,10 +157,10 @@ module Jsus
156
157
  def lookup_direct_dependencies!(source)
157
158
  result = if source
158
159
  (source.dependencies + source.external_dependencies).map do |dependency|
159
- result = lookup(dependency)
160
+ result = provides_tree.glob("/#{dependency}").map {|node| node.value }
160
161
  puts "#{source.filename} is missing #{dependency.is_a?(SourceFile) ? dependency.filename : dependency.to_s}" if !result && Jsus.verbose?
161
162
  result
162
- end
163
+ end.flatten
163
164
  else
164
165
  []
165
166
  end
@@ -170,36 +171,29 @@ module Jsus
170
171
  # Returs a tree, containing all the sources
171
172
  #
172
173
  def source_tree
173
- @source_tree ||= source_tree!
174
- end
175
-
176
- def source_tree! # :nodoc:
177
- tree = Tree.new
178
- sources.each do |source|
179
- if source.package
180
- tree.insert("/" + source.package.name + "/" + File.basename(source.filename), source)
181
- else
182
- tree.insert("/" + File.basename(source.filename), source)
183
- end
184
- end
185
- tree
174
+ @source_tree ||= Tree.new
186
175
  end
187
176
 
188
177
  #
189
178
  # Returns a tree containing all the provides tags
190
179
  #
191
180
  def provides_tree
192
- @provides_tree ||= provides_tree!
181
+ @provides_tree ||= Tree.new
193
182
  end
194
183
 
195
- def provides_tree!
196
- tree = Tree.new
197
- sources.each do |source|
198
- source.provides.each do |tag|
199
- tree.insert("/" + tag.to_s, source)
200
- end
184
+
185
+ #
186
+ # Registers the source in both trees
187
+ #
188
+ def add_source_to_trees(source)
189
+ if source.package
190
+ source_tree.insert("/" + source.package.name + "/" + File.basename(source.filename), source)
191
+ else
192
+ source_tree.insert("/" + File.basename(source.filename), source)
193
+ end
194
+ source.provides.each do |tag|
195
+ provides_tree.insert("/" + tag.to_s, source)
201
196
  end
202
- tree
203
197
  end
204
198
 
205
199
  protected
@@ -0,0 +1,13 @@
1
+ /*
2
+ ---
3
+
4
+ script: Class.js
5
+
6
+ description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
7
+
8
+ license: MIT-style license.
9
+
10
+ provides: [Class]
11
+
12
+ ...
13
+ */
@@ -0,0 +1,8 @@
1
+ name: Class
2
+ filename: class.js
3
+ description: Class class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Class.js
@@ -0,0 +1,16 @@
1
+ /*
2
+ ---
3
+
4
+ script: Hash.js
5
+
6
+ description: Contains the Hash extensions for objects
7
+
8
+ license: MIT-style license.
9
+
10
+ requires:
11
+ - Class/Class
12
+
13
+ provides: [Hash]
14
+
15
+ ...
16
+ */
@@ -0,0 +1,8 @@
1
+ name: Hash
2
+ filename: hash.js
3
+ description: Hash class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Hash.js
@@ -0,0 +1,16 @@
1
+ /*
2
+ ---
3
+
4
+ script: Mash.js
5
+
6
+ description: Contains the Mash extensions for objects
7
+
8
+ license: MIT-style license.
9
+
10
+ requires:
11
+ - Hash/*
12
+
13
+ provides: [Mash]
14
+
15
+ ...
16
+ */
@@ -0,0 +1,8 @@
1
+ name: Mash
2
+ filename: mash.js
3
+ description: Mash class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Mash.js
@@ -100,6 +100,14 @@ describe Jsus::Pool do
100
100
  subject.lookup_dependencies("Lol/Wtf").should == []
101
101
  subject.lookup_dependencies(Jsus::Tag["Caught/Mosh"]).should == []
102
102
  end
103
+
104
+ context "wildcard support" do
105
+ let(:input_dir) { "spec/data/DependenciesWildcards/app/javascripts" }
106
+
107
+ it "should support wildcards" do
108
+ subject.lookup_dependencies("Mash/Mash").should == [sources[1], sources[2]]
109
+ end
110
+ end
103
111
  end
104
112
 
105
113
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 20
9
- version: 0.1.20
8
+ - 21
9
+ version: 0.1.21
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mark Abramov
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-27 00:00:00 +03:00
17
+ date: 2010-11-28 00:00:00 +03:00
18
18
  default_executable: jsus
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -221,6 +221,12 @@ files:
221
221
  - spec/data/ChainDependencies/app/javascripts/Hash/package.yml
222
222
  - spec/data/ChainDependencies/app/javascripts/Mash/Source/Mash.js
223
223
  - spec/data/ChainDependencies/app/javascripts/Mash/package.yml
224
+ - spec/data/DependenciesWildcards/app/javascripts/Class/Source/Class.js
225
+ - spec/data/DependenciesWildcards/app/javascripts/Class/package.yml
226
+ - spec/data/DependenciesWildcards/app/javascripts/Hash/Source/Hash.js
227
+ - spec/data/DependenciesWildcards/app/javascripts/Hash/package.yml
228
+ - spec/data/DependenciesWildcards/app/javascripts/Mash/Source/Mash.js
229
+ - spec/data/DependenciesWildcards/app/javascripts/Mash/package.yml
224
230
  - spec/data/Extensions/app/javascripts/Core/Source/Class.js
225
231
  - spec/data/Extensions/app/javascripts/Core/package.yml
226
232
  - spec/data/Extensions/app/javascripts/Orwik/Extensions/Class.js
@@ -281,7 +287,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
281
287
  requirements:
282
288
  - - ">="
283
289
  - !ruby/object:Gem::Version
284
- hash: -1317162541712808956
290
+ hash: -3919880184784396237
285
291
  segments:
286
292
  - 0
287
293
  version: "0"