ymdp 0.1.10 → 0.1.11

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.
Files changed (109) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +8 -1
  3. data/History.txt +13 -2
  4. data/Rakefile +7 -0
  5. data/VERSION +1 -1
  6. data/features/data/app/assets/yrb/en-US/keys_en-US.pres +1 -0
  7. data/features/data/app/javascripts/application.js +7 -0
  8. data/features/data/app/stylesheets/application.css +3 -0
  9. data/features/data/app/views/layouts/application.html.haml +25 -0
  10. data/features/data/app/views/page.html.haml +2 -0
  11. data/{spec → features}/data/config/config.yml +5 -6
  12. data/features/data/config/content.yml +2 -0
  13. data/features/data/config/jslint.js +1 -0
  14. data/features/data/config/servers.yml +10 -0
  15. data/features/step_definitions/ymdp_steps.rb +54 -0
  16. data/features/support/env.rb +40 -0
  17. data/features/ymdp.feature +61 -0
  18. data/lib/ymdp.rb +7 -12
  19. data/lib/ymdp/base.rb +16 -65
  20. data/lib/ymdp/commands/generate.rb +2 -4
  21. data/lib/ymdp/compiler/base.rb +10 -8
  22. data/lib/ymdp/compiler/domains.rb +2 -1
  23. data/lib/ymdp/compiler/template.rb +29 -18
  24. data/lib/ymdp/{processor → compressor}/compressor.rb +6 -1
  25. data/{spec/data/script → lib/ymdp/compressor}/yuicompressor-2.4.2.jar +0 -0
  26. data/lib/ymdp/configuration/config.rb +3 -4
  27. data/lib/ymdp/configuration/constants.rb +22 -19
  28. data/lib/ymdp/tasks/ymdp.rake +0 -2
  29. data/{spec/data/script → lib/ymdp/validator}/jslint.js +0 -0
  30. data/lib/ymdp/{processor → validator}/validator.rb +30 -38
  31. data/lib/ymdp/{application.rb → view/application.rb} +0 -0
  32. data/lib/ymdp/{application_view.rb → view/application_view.rb} +4 -4
  33. data/lib/ymdp/{asset_tag_helper.rb → view/asset_tag_helper.rb} +0 -0
  34. data/lib/ymdp/{tag_helper.rb → view/tag_helper.rb} +0 -0
  35. data/spec/application_spec.rb +2 -0
  36. data/spec/application_view_spec.rb +6 -6
  37. data/spec/compiler_template_spec.rb +4 -4
  38. data/spec/compressor_spec.rb +11 -7
  39. data/spec/configuration_spec.rb +3 -0
  40. data/spec/default_settings.rb +1 -1
  41. data/spec/domains_spec.rb +1 -1
  42. data/spec/spec_helper.rb +1 -0
  43. data/spec/stubs.rb +4 -1
  44. data/spec/validator_spec.rb +45 -40
  45. data/spec/ymdp_base_spec.rb +10 -7
  46. data/ymdp.gemspec +25 -76
  47. metadata +32 -76
  48. data/lib/ymdp/processor/form_post.rb +0 -62
  49. data/lib/ymdp/processor/w3c.rb +0 -24
  50. data/spec/data/Rakefile +0 -3
  51. data/spec/data/VERSION +0 -1
  52. data/spec/data/app/.gitignore +0 -1
  53. data/spec/data/app/assets/images/lightbox/lightbox_bg.png +0 -0
  54. data/spec/data/app/assets/javascripts/OpenMailIntl.js +0 -291
  55. data/spec/data/app/assets/javascripts/controls.js +0 -965
  56. data/spec/data/app/assets/javascripts/date.js +0 -104
  57. data/spec/data/app/assets/javascripts/dragdrop.js +0 -974
  58. data/spec/data/app/assets/javascripts/effects.js +0 -1123
  59. data/spec/data/app/assets/javascripts/lowpro.js +0 -320
  60. data/spec/data/app/assets/javascripts/prototype.js +0 -4874
  61. data/spec/data/app/assets/javascripts/scriptaculous.js +0 -68
  62. data/spec/data/app/assets/yrb/en-US/application_en-US.pres +0 -7
  63. data/spec/data/app/helpers/application_helper.rb +0 -3
  64. data/spec/data/app/javascripts/application.js +0 -580
  65. data/spec/data/app/javascripts/debug.js +0 -138
  66. data/spec/data/app/javascripts/flash.js +0 -96
  67. data/spec/data/app/javascripts/header.js +0 -13
  68. data/spec/data/app/javascripts/help.js +0 -76
  69. data/spec/data/app/javascripts/i18n.js +0 -235
  70. data/spec/data/app/javascripts/launcher.js +0 -159
  71. data/spec/data/app/javascripts/logger.js +0 -61
  72. data/spec/data/app/javascripts/tag_helper.js +0 -178
  73. data/spec/data/app/stylesheets/application.css +0 -0
  74. data/spec/data/app/stylesheets/ie.css +0 -0
  75. data/spec/data/app/stylesheets/ie6.css +0 -0
  76. data/spec/data/app/stylesheets/ie7.css +0 -0
  77. data/spec/data/app/stylesheets/ie8.css +0 -0
  78. data/spec/data/app/stylesheets/lightbox.css +0 -30
  79. data/spec/data/app/stylesheets/non_ie.css +0 -0
  80. data/spec/data/app/views/layouts/application.html.haml +0 -37
  81. data/spec/data/app/views/page.html.haml +0 -1
  82. data/spec/data/app/views/shared/_error.html.haml +0 -8
  83. data/spec/data/app/views/shared/_flash.html.haml +0 -2
  84. data/spec/data/app/views/shared/_javascripts.html.haml +0 -22
  85. data/spec/data/app/views/shared/_loading.html.haml +0 -13
  86. data/spec/data/app/views/shared/_stylesheets.html.haml +0 -23
  87. data/spec/data/config/categories.yml +0 -6
  88. data/spec/data/config/config.yml.example +0 -30
  89. data/spec/data/config/constants.rb +0 -52
  90. data/spec/data/config/content.yml +0 -2
  91. data/spec/data/config/servers.yml +0 -10
  92. data/spec/data/config/servers.yml.example +0 -10
  93. data/spec/data/lib/init.rb +0 -13
  94. data/spec/data/lib/tasks/environment.rake +0 -4
  95. data/spec/data/lib/tasks/keys.rake +0 -3
  96. data/spec/data/lib/tasks/setup.rake +0 -13
  97. data/spec/data/lib/tasks/ymdp.rake +0 -4
  98. data/spec/data/script/build +0 -9
  99. data/spec/data/script/config +0 -13
  100. data/spec/data/script/destroy +0 -18
  101. data/spec/data/script/generate +0 -4
  102. data/spec/data/script/gitrm +0 -17
  103. data/spec/data/script/growl +0 -6
  104. data/spec/data/script/images +0 -48
  105. data/spec/data/script/langs +0 -29
  106. data/spec/data/script/translate +0 -5
  107. data/spec/data/script/ymdt +0 -1895
  108. data/spec/data/script/ymdt.old +0 -1890
  109. data/test.rb +0 -46
data/.gitignore CHANGED
@@ -23,3 +23,5 @@ pkg
23
23
  vendor/bin/*
24
24
  vendor/gems/*
25
25
  !vendor/gems/cache/
26
+ features/data/servers
27
+ features/data/tmp
data/Gemfile CHANGED
@@ -1,17 +1,24 @@
1
1
  gem "rspec", ">= 1.2.6"
2
+ gem "polyglot"
3
+ gem "treetop"
4
+ gem "cucumber"
2
5
  gem "haml"
3
6
  gem "json"
4
7
  gem "hpricot"
8
+ gem "mime-types", :require_as => "mime/types"
5
9
  gem "ruby-growl"
10
+ gem "grit"
6
11
  gem "activesupport", :require_as => "active_support"
7
12
  gem "sishen-rtranslate"
8
- gem "progressions-basepath", :require_as => "basepath"
13
+ gem "progressions-basepath", :require_as => "basepath", :except => :cucumber
9
14
  gem "progressions-g", :require_as => "g"
10
15
  gem "timer"
11
16
  gem "serenity"
17
+ gem "natural_time"
12
18
  gem "ymdp_generator"
13
19
  gem "ymdt"
14
20
  gem "yrb"
15
21
  gem "idiom"
22
+ gem "w3c_validators"
16
23
 
17
24
  bin_path "vendor/bin"
@@ -1,5 +1,16 @@
1
- == in Git
2
-
1
+ == 0.1.11 2010-01-25
2
+ * minor enhancements
3
+ * changed implementation of configuration object
4
+ * exposed "host" attribute within templates
5
+ * send content into template with <tt>yield</tt> instead of instance variable
6
+ * Cucumber tests
7
+ * refactor application_view into "view" folder
8
+ * rename "processor" folder into "compressor" and "validator" folders
9
+ * move JS validator and JS compressor into YMDP gem
10
+ * replace HTML validator with w3c_validator gem
11
+ * bug fixes
12
+ * fixed filename in form_post.rb
13
+ * removed unneeded data folder from /spec
3
14
 
4
15
  == 0.1.10 2010-01-22
5
16
  * minor enhancements
data/Rakefile CHANGED
@@ -25,6 +25,7 @@ begin
25
25
  gem.add_runtime_dependency "ymdp_generator", ">= 0"
26
26
  gem.add_runtime_dependency "ymdt", ">= 0"
27
27
  gem.add_runtime_dependency "yrb", ">= 0"
28
+ gem.add_runtime_dependency "w3c_validators", ">= 0"
28
29
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
29
30
  end
30
31
  Jeweler::GemcutterTasks.new
@@ -48,6 +49,7 @@ Spec::Rake::SpecTask.new(:rcov) do |spec|
48
49
  end
49
50
 
50
51
  task :bundle do
52
+ YMDP_TEST = true
51
53
  require 'vendor/gems/environment'
52
54
  Bundler.require_env
53
55
  end
@@ -65,3 +67,8 @@ Rake::RDocTask.new do |rdoc|
65
67
  rdoc.rdoc_files.include('README*')
66
68
  rdoc.rdoc_files.include('lib/**/*.rb')
67
69
  end
70
+
71
+ require 'cucumber/rake/task'
72
+ Cucumber::Rake::Task.new do |t|
73
+ t.cucumber_opts = "--format pretty"
74
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.10
1
+ 0.1.11
@@ -0,0 +1,7 @@
1
+ // This contains application-level JavaScript
2
+
3
+ var Application = {
4
+ init: function() {
5
+ $('main').update("Hello");
6
+ }
7
+ };
@@ -0,0 +1,3 @@
1
+ html {
2
+ font-family: Arial, Helvetica, sans-serif;
3
+ }
@@ -0,0 +1,25 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ /
5
+ = "Sprint #{@version} #{@sprint_name}"
6
+ = "'#{@view}' view for #{@domain}: #{@server}.#{@host}"
7
+ = "built at #{Time.now}"
8
+ = "commit #{@hash}, '#{@message}'"
9
+
10
+ %title= "#{@view} view for #{@domain}: #{@server}.#{@host}"
11
+
12
+ = render :stylesheet => 'application'
13
+
14
+ %body{:class => @view}
15
+
16
+ #content
17
+ = yield
18
+
19
+ = render :javascript => 'application'
20
+
21
+ /
22
+ = "Sprint #{@version} #{@sprint_name}"
23
+ = "'#{@view}' view for #{@domain}: #{@server}.#{@host}"
24
+ = "built at #{Time.now}"
25
+ = "commit #{@hash}, '#{@message}'"
@@ -0,0 +1,2 @@
1
+ %p This is some content.
2
+
@@ -1,11 +1,10 @@
1
1
  config:
2
- username: user
2
+ username: username
3
3
  password: password
4
4
  default_server: staging
5
- host: myserver.com
6
5
  production_server: my
7
- doctype: HTML 4.0 Transitional
8
- growl: false
6
+ host: mysite.com
7
+ growl: true
9
8
 
10
9
  verbose: false
11
10
  compress:
@@ -17,10 +16,10 @@ config:
17
16
  html:
18
17
  doctype: HTML 4.0 Transitional
19
18
  build: true
20
- deploy: true
19
+ deploy: false
21
20
  embedded_js:
22
21
  build: true
23
- deploy: true
22
+ deploy: false
24
23
  js_assets:
25
24
  build: false
26
25
  deploy: false
@@ -0,0 +1,2 @@
1
+ version: 1
2
+ sprint_name: Apple
@@ -0,0 +1,10 @@
1
+ servers:
2
+ production:
3
+ server: www
4
+ application_id: abcdefg
5
+ assets_id: hijklmnop_1
6
+
7
+ development:
8
+ server: staging
9
+ application_id: aeiouefgj
10
+ assets_id: jklmnopqrs_1
@@ -0,0 +1,54 @@
1
+ Given %r{I load config.yml} do
2
+ require 'ymdp/configuration/constants'
3
+ end
4
+
5
+ Then %r{my "([^\"]*)" setting should be "([^\"]*)"} do |key, value|
6
+ YMDP::Base.configuration.send(key).should == value
7
+ end
8
+
9
+ Given %r{I compile the application with the message "([^\"]*)"} do |message|
10
+ begin
11
+ @options = {
12
+ :commit => false,
13
+ :branch => "master",
14
+ :base_path => BASE_PATH,
15
+ :servers => SERVERS,
16
+ :message => message
17
+ }
18
+ Object.send(:remove_const, :YMDP_ENV) if defined?(YMDP_ENV)
19
+ YMDP_ENV = "build"
20
+ YMDP::Compiler::Domains.new(@options).compile
21
+ rescue StandardError => e
22
+ @exception = e.message
23
+ end
24
+ end
25
+
26
+ And %r{I should see "([^\"]*)" in "([^\"]*)"} do |content, path|
27
+ File.read("#{BASE_PATH}/#{path}").should =~ /#{content}/
28
+ end
29
+
30
+ Given %r{the file "([^\"]*)" exists with "([^\"]*)"} do |filename, content|
31
+ content.gsub!("\\n", "\n")
32
+ File.open("#{BASE_PATH}/#{filename}", "w") do |f|
33
+ content.split("\n").each do |line|
34
+ f.puts line
35
+ end
36
+ end
37
+ @files << "#{BASE_PATH}/#{filename}"
38
+ end
39
+
40
+ Then /^an exception should have been raised with the message "([^\"]*)"$/ do |message|
41
+ @exception.should == message
42
+ end
43
+
44
+ Then %r{no exceptions should have been raised} do
45
+ @exception.should be_nil
46
+ end
47
+
48
+ And %r{I remove the file "([^\"]*)"} do |filename|
49
+ system "rm #{BASE_PATH}/#{filename}"
50
+ end
51
+
52
+ When %r{I deploy the application} do
53
+
54
+ end
@@ -0,0 +1,40 @@
1
+ require 'vendor/gems/environment'
2
+ Bundler.require_env :cucumber
3
+
4
+ require 'spec/expectations'
5
+ require 'spec/mocks'
6
+
7
+ require 'lib/ymdp'
8
+ require 'compiler/domains'
9
+
10
+ require 'spec/stubs'
11
+
12
+ Before do
13
+ unless defined?(BASE_PATH)
14
+ BASE_PATH = File.expand_path("./features/data")
15
+ APPLICATION_PATH = File.expand_path("./features/data/app")
16
+ CONFIG_PATH = File.expand_path("./features/data/config")
17
+ SERVERS_PATH = File.expand_path("./features/data/servers")
18
+ TMP_PATH = File.expand_path("./features/data/tmp")
19
+ end
20
+
21
+ @exception = nil
22
+ @files = []
23
+
24
+ $rspec_mocks ||= Spec::Mocks::Space.new
25
+
26
+ stub_growl
27
+
28
+ @git_helper = 'git_helper'
29
+ @git_helper.stub(:commit).as_null_object
30
+ YMDP::GitHelper.stub!(:new).and_return(@git_helper)
31
+
32
+ @ymdt = "ymdt"
33
+ YMDT::Base.stub!(:new).and_return(@ymdt)
34
+ end
35
+
36
+ After do
37
+ @files.each do |file|
38
+ system "rm #{file}"
39
+ end
40
+ end
@@ -0,0 +1,61 @@
1
+ Feature: Configuration
2
+
3
+ Background:
4
+ Given I load config.yml
5
+
6
+ Scenario: Load the config file
7
+ Then my "username" setting should be "username"
8
+ And my "password" setting should be "password"
9
+
10
+ @wip
11
+ Scenario: Ensure the commit message is in the view
12
+ Given I compile the application with the message "this is my commit message"
13
+ Then I should see "this is my commit message" in "servers/production/views/page"
14
+ Then I should see "this is my commit message" in "servers/development/views/page"
15
+ And I should see "Apple" in "servers/production/views/page"
16
+ And I should see "Apple" in "servers/development/views/page"
17
+ And I should see "mysite.com" in "servers/production/views/page"
18
+ And I should see "mysite.com" in "servers/development/views/page"
19
+ And I should see "font-family:Arial,Helvetica,sans-serif;" in "servers/production/views/page"
20
+ And I should see "font-family:Arial,Helvetica,sans-serif;" in "servers/development/views/page"
21
+ And I should see "var Application" in "servers/production/views/page"
22
+ And I should see "var Application" in "servers/development/views/page"
23
+ And no exceptions should have been raised
24
+
25
+
26
+ Scenario: Build application with invalid HTML
27
+ Given the file "app/views/invalid.html.haml" exists with "%span\n #invalid_div This won't validate"
28
+ And I compile the application with the message "this shouldn't validate"
29
+ Then an exception should have been raised with the message "HTML Validation Errors"
30
+
31
+
32
+ Scenario: Render nil on nonexistent scripts
33
+ Given the file "app/views/valid.html.haml" exists with "%p Hello\n= render :javascript => 'nonexistent'\n%p Goodbye"
34
+ And I compile the application with the message "this should have no javascript"
35
+ Then I should see "<p>Hello</p>\n \n <p>Goodbye</p>" in "servers/production/views/valid"
36
+ And no exceptions should have been raised
37
+
38
+
39
+ Scenario: Render nil on nonexistent stylesheets
40
+ Given the file "app/views/valid.html.haml" exists with "%p Hello\n= render :stylesheet => 'nonexistent'\n%p Goodbye"
41
+ And I compile the application with the message "this should have no stylesheet"
42
+ Then I should see "<p>Hello</p>\n \n <p>Goodbye</p>" in "servers/production/views/valid"
43
+ And no exceptions should have been raised
44
+
45
+
46
+ Scenario: Build application with valid JavaScript
47
+ Given the file "app/views/valid.html.haml" exists with "= render :javascript => 'valid'"
48
+ And the file "app/javascripts/valid.js" exists with "var a = 'hello'; alert(a);"
49
+ And I compile the application with the message "this should validate"
50
+ Then no exceptions should have been raised
51
+
52
+
53
+ Scenario: Build application with invalid JavaScript
54
+ Given the file "app/javascripts/invalid.js" exists with "A = function() { alert('hello'); }"
55
+ And the file "app/views/invalid.html.haml" exists with "= render :javascript => 'invalid'"
56
+ And I compile the application with the message "this shouldn't validate"
57
+ Then an exception should have been raised with the message "JavaScript Errors embedded in /tmp/invalid.js"
58
+
59
+
60
+
61
+
@@ -8,18 +8,13 @@ $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
8
8
  #
9
9
 
10
10
  require 'rubygems'
11
+ require 'haml'
11
12
  require 'erb'
12
13
  require 'set'
13
14
 
14
- require File.expand_path("#{dir}/tag_helper")
15
- require File.expand_path("#{dir}/asset_tag_helper")
16
-
17
- Dir["#{dir}/*.rb"].each do |path|
18
- require File.expand_path(path)
19
- end
20
-
21
- ["support", "configuration"].each do |directory|
22
- Dir["#{dir}/#{directory}/*.rb"].each do |path|
23
- require File.expand_path(path)
24
- end
25
- end
15
+ require 'base'
16
+ require 'validator/validator'
17
+ require 'view/tag_helper'
18
+ require 'view/asset_tag_helper'
19
+ require 'support/file'
20
+ require 'configuration/config'
@@ -31,62 +31,41 @@ module YMDP
31
31
  # These options are still evolving.
32
32
  #
33
33
  class Base
34
- # Configures global YMDP settings. Sends a YMDP::Configuration::Setter instance to
35
- # the block, which is used to define global settings.
36
- #
37
- def self.configure
38
- setter = YMDP::Configuration::Setter.new
39
-
40
- yield setter
41
-
42
- @@paths = setter.paths if setter.paths.try(:any?)
43
- @@servers = setter.servers if setter.servers.try(:any?)
44
-
45
- @@content_variables ||= {}
46
-
47
- setter.instance_variables.each do |key|
48
- unless ["@servers", "@paths", "@content_variables"].include?(key)
49
- value = setter.instance_variable_get(key)
50
- create_accessor(key, value)
51
- end
52
- end
53
-
54
- if setter.content_variables.any?
55
- content_variables = @@content_variables.merge(setter.content_variables)
56
- create_accessor("content_variables", content_variables)
57
- end
34
+ def self.configuration
35
+ @@configuration ||= YMDP::Configuration::Setter.new
58
36
  end
59
37
 
60
- # Returns the server definition hash as a class variable, making it available to
61
- # any class derived from YMDP::Base.
62
- #
63
- def self.servers
64
- @@servers
38
+ def content_variables
39
+ configuration.content_variables
65
40
  end
66
41
 
67
- # Returns the paths definition hash as a class variable, making it available to
68
- # any class derived from YMDP::Base.
69
- #
70
- def self.paths
71
- @@paths
42
+ def configuration
43
+ @@configuration
44
+ end
45
+
46
+ # Configures global YMDP settings. Sends a YMDP::Configuration::Setter instance to
47
+ # the block, which is used to define global settings.
48
+ #
49
+ def self.configure
50
+ yield configuration
72
51
  end
73
52
 
74
53
  # Returns the server definition hash as an instance variable, making it available to
75
54
  # instances of any class derived from YMDP::Base.
76
55
  #
77
56
  def servers
78
- self.class.servers
57
+ configuration.servers
79
58
  end
80
59
 
81
60
  # Returns the paths definition hash as an instance variable, making it available to
82
61
  # instances of any class derived from YMDP::Base.
83
62
  #
84
63
  def paths
85
- self.class.paths
64
+ configuration.paths
86
65
  end
87
66
 
88
67
  def self.base_path
89
- paths[:base_path]
68
+ configuration.paths[:base_path]
90
69
  end
91
70
 
92
71
  def base_path
@@ -104,33 +83,5 @@ module YMDP
104
83
  def display_path(path)
105
84
  self.class.display_path(path)
106
85
  end
107
-
108
-
109
- private
110
-
111
- # Creates class- and instance-level accessors for the key and value.
112
- #
113
- def self.create_accessor(key, value)
114
- if key
115
- value_str = "\"#{value}\""
116
-
117
- key = key.to_s.gsub("@", "")
118
-
119
- class_eval %(
120
- class << self
121
- attr_accessor :#{key}
122
- end
123
- )
124
-
125
- self.send("#{key}=".to_sym, value)
126
-
127
- eval %(
128
- def #{key}
129
- #{self}.#{key}
130
- end
131
- )
132
- end
133
- end
134
86
  end
135
87
  end
136
-