vendor/behaviors/lib/behaviors/reporttask.rb in ceedling-0.28.3 vs vendor/behaviors/lib/behaviors/reporttask.rb in ceedling-0.29.0
- old
+ new
@@ -1,158 +1,158 @@
-require 'rake'
-require 'rake/tasklib'
-
-module Behaviors
-include Rake
-
- class ReportTask < TaskLib
- attr_accessor :pattern
- attr_accessor :html_dir
-
- def initialize(name=:behaviors)
- @name = name
- @html_dir = 'doc'
- yield self if block_given?
- define
- end
-
- def define
- desc "List behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
- task @name do
- specifications.each do |spec|
- puts "#{spec.name} should:\n"
- spec.requirements.each do |req|
- puts " - #{req}"
- end
- end
- end
-
- desc "Generate html report of behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
- task "#{@name}_html" do
- require 'erb'
- txt =<<-EOS
-<html>
-<head>
-<style>
-
-div.title
-{
- width: 600px;
- font: bold 14pt trebuchet ms;
-}
-
-div.specification
-{
- font: bold 12pt trebuchet ms;
- border: solid 1px black;
- width: 600px;
- padding: 5px;
- margin: 5px;
-}
-
-ul.requirements
-{
- font: normal 11pt verdana;
- padding-left: 0;
- margin-left: 0;
- border-bottom: 1px solid gray;
- width: 600px;
-}
-
-ul.requirements li
-{
- list-style: none;
- margin: 0;
- padding: 0.25em;
- border-top: 1px solid gray;
-}
-</style>
-</head>
-<body>
-<div class="title">Specifications</div>
-<% specifications.each do |spec| %>
-<div class="specification">
-<%= spec.name %> should:
-<ul class="requirements">
-<% spec.requirements.each do |req| %>
-<li><%= req %></li>
-<% end %>
-</ul>
-</div>
-<% end %>
-</body>
-</html>
- EOS
- output_dir = File.expand_path(@html_dir)
- mkdir_p output_dir
- output_filename = output_dir + "/behaviors.html"
- File.open(output_filename,"w") do |f|
- f.write ERB.new(txt).result(binding)
- end
- puts "(Wrote #{output_filename})"
- end
- end
-
- private
- def test_files
- test_list = FileList[@pattern]
- if ENV['for']
- test_list = test_list.grep(/#{ENV['for']}/i)
- end
- test_list
- end
-
- def specifications
- test_files.map do |file|
- spec = OpenStruct.new
- m = %r".*/([^/].*)_test.rb".match(file)
- class_name = titleize(m[1]) if m[1]
- spec.name = class_name
- spec.requirements = []
- File::readlines(file).each do |line|
- if line =~ /^\s*should\s+\(?\s*["'](.*)["']/
- spec.requirements << $1
- end
- end
- spec
- end
- end
-
- ############################################################
- # STOLEN FROM inflector.rb
- ############################################################
- #--
- # Copyright (c) 2005 David Heinemeier Hansson
- #
- # Permission is hereby granted, free of charge, to any person obtaining
- # a copy of this software and associated documentation files (the
- # "Software"), to deal in the Software without restriction, including
- # without limitation the rights to use, copy, modify, merge, publish,
- # distribute, sublicense, and/or sell copies of the Software, and to
- # permit persons to whom the Software is furnished to do so, subject to
- # the following conditions:
- #
- # The above copyright notice and this permission notice shall be
- # included in all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #++
- def titleize(word)
- humanize(underscore(word)).gsub(/\b([a-z])/) { $1.capitalize }
- end
-
- def underscore(camel_cased_word) camel_cased_word.to_s.gsub(/::/, '/').
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').tr("-", "_").downcase
- end
-
- def humanize(lower_case_and_underscored_word)
- lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
- end
-
- end
-end
+require 'rake'
+require 'rake/tasklib'
+
+module Behaviors
+include Rake
+
+ class ReportTask < TaskLib
+ attr_accessor :pattern
+ attr_accessor :html_dir
+
+ def initialize(name=:behaviors)
+ @name = name
+ @html_dir = 'doc'
+ yield self if block_given?
+ define
+ end
+
+ def define
+ desc "List behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
+ task @name do
+ specifications.each do |spec|
+ puts "#{spec.name} should:\n"
+ spec.requirements.each do |req|
+ puts " - #{req}"
+ end
+ end
+ end
+
+ desc "Generate html report of behavioral definitions for the classes specified (use for=<regexp> to further limit files included in report)"
+ task "#{@name}_html" do
+ require 'erb'
+ txt =<<-EOS
+<html>
+<head>
+<style>
+
+div.title
+{
+ width: 600px;
+ font: bold 14pt trebuchet ms;
+}
+
+div.specification
+{
+ font: bold 12pt trebuchet ms;
+ border: solid 1px black;
+ width: 600px;
+ padding: 5px;
+ margin: 5px;
+}
+
+ul.requirements
+{
+ font: normal 11pt verdana;
+ padding-left: 0;
+ margin-left: 0;
+ border-bottom: 1px solid gray;
+ width: 600px;
+}
+
+ul.requirements li
+{
+ list-style: none;
+ margin: 0;
+ padding: 0.25em;
+ border-top: 1px solid gray;
+}
+</style>
+</head>
+<body>
+<div class="title">Specifications</div>
+<% specifications.each do |spec| %>
+<div class="specification">
+<%= spec.name %> should:
+<ul class="requirements">
+<% spec.requirements.each do |req| %>
+<li><%= req %></li>
+<% end %>
+</ul>
+</div>
+<% end %>
+</body>
+</html>
+ EOS
+ output_dir = File.expand_path(@html_dir)
+ mkdir_p output_dir
+ output_filename = output_dir + "/behaviors.html"
+ File.open(output_filename,"w") do |f|
+ f.write ERB.new(txt).result(binding)
+ end
+ puts "(Wrote #{output_filename})"
+ end
+ end
+
+ private
+ def test_files
+ test_list = FileList[@pattern]
+ if ENV['for']
+ test_list = test_list.grep(/#{ENV['for']}/i)
+ end
+ test_list
+ end
+
+ def specifications
+ test_files.map do |file|
+ spec = OpenStruct.new
+ m = %r".*/([^/].*)_test.rb".match(file)
+ class_name = titleize(m[1]) if m[1]
+ spec.name = class_name
+ spec.requirements = []
+ File::readlines(file).each do |line|
+ if line =~ /^\s*should\s+\(?\s*["'](.*)["']/
+ spec.requirements << $1
+ end
+ end
+ spec
+ end
+ end
+
+ ############################################################
+ # STOLEN FROM inflector.rb
+ ############################################################
+ #--
+ # Copyright (c) 2005 David Heinemeier Hansson
+ #
+ # Permission is hereby granted, free of charge, to any person obtaining
+ # a copy of this software and associated documentation files (the
+ # "Software"), to deal in the Software without restriction, including
+ # without limitation the rights to use, copy, modify, merge, publish,
+ # distribute, sublicense, and/or sell copies of the Software, and to
+ # permit persons to whom the Software is furnished to do so, subject to
+ # the following conditions:
+ #
+ # The above copyright notice and this permission notice shall be
+ # included in all copies or substantial portions of the Software.
+ #
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ #++
+ def titleize(word)
+ humanize(underscore(word)).gsub(/\b([a-z])/) { $1.capitalize }
+ end
+
+ def underscore(camel_cased_word) camel_cased_word.to_s.gsub(/::/, '/').
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').tr("-", "_").downcase
+ end
+
+ def humanize(lower_case_and_underscored_word)
+ lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
+ end
+
+ end
+end