ymdp 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
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
-