cog 0.0.10 → 0.0.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.
- data/API.rdoc +4 -31
- data/Default.cogfile +8 -5
- data/bin/cog +61 -51
- data/lib/cog.rb +18 -2
- data/lib/cog/config.rb +60 -42
- data/lib/cog/config/cogfile.rb +76 -0
- data/lib/cog/errors.rb +16 -0
- data/lib/cog/generator.rb +138 -0
- data/lib/cog/spec_helpers.rb +35 -0
- data/lib/cog/spec_helpers/matchers.rb +17 -17
- data/lib/cog/spec_helpers/matchers/match_maker.rb +51 -0
- data/lib/cog/spec_helpers/runner.rb +9 -5
- data/lib/cog/tool.rb +51 -0
- data/lib/cog/version.rb +3 -0
- data/templates/{snippets → cog/snippets}/c++/generated_warning.h.erb +0 -0
- data/templates/{snippets → cog/snippets}/generated_warning.txt +0 -0
- data/templates/cog/tool/API.rdoc.erb +7 -0
- data/templates/cog/tool/Gemfile.erb +4 -0
- data/templates/cog/tool/LICENSE.erb +18 -0
- data/templates/cog/tool/README.markdown.erb +18 -0
- data/templates/cog/tool/Rakefile.erb +15 -0
- data/templates/cog/tool/generator.rb.erb +5 -0
- data/templates/cog/tool/tool.gemspec.erb +18 -0
- data/templates/cog/tool/tool.rb.erb +4 -0
- data/templates/cog/tool/version.rb.erb +5 -0
- metadata +21 -19
- data/lib/cog/cogfile.rb +0 -65
- data/lib/cog/meta.rb +0 -9
- data/lib/cog/meta/gen_gen.rb +0 -85
- data/lib/cog/meta/mirror_gen.rb +0 -39
- data/lib/cog/mixins.rb +0 -13
- data/lib/cog/mixins/mirror.rb +0 -61
- data/lib/cog/mixins/uses_templates.rb +0 -152
- data/lib/cog_version.rb +0 -3
- data/templates/c++/mirror-abstract.cpp.erb +0 -0
- data/templates/c++/mirror-abstract.h.erb +0 -6
- data/templates/c++/mirror-impl.cpp.erb +0 -1
- data/templates/c++/mirror-impl.h.erb +0 -0
- data/templates/mirror.rb.erb +0 -10
@@ -0,0 +1,18 @@
|
|
1
|
+
# Ensure we require the local version and not one we might have installed already
|
2
|
+
require File.join([File.dirname(__FILE__),'lib','<%= @name %>/version.rb'])
|
3
|
+
spec = Gem::Specification.new do |s|
|
4
|
+
s.name = '<%= @name %>'
|
5
|
+
s.version = <%= @module_name %>::VERSION
|
6
|
+
s.author = '<%= @author %>'
|
7
|
+
s.email = '<%= @email %>'
|
8
|
+
s.homepage = ''
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.summary = '<%= @description %>'
|
11
|
+
s.files = %w(LICENSE) + Dir.glob('cog/**/*') + Dir.glob('lib/**/*.rb')
|
12
|
+
s.require_paths << 'lib'
|
13
|
+
s.has_rdoc = true
|
14
|
+
s.extra_rdoc_files = ['API.rdoc']
|
15
|
+
s.rdoc_options << '--title' << '<%= @name %>' << '-ri'
|
16
|
+
s.add_development_dependency('rake')
|
17
|
+
s.add_development_dependency('rdoc')
|
18
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 11
|
10
|
+
version: 0.0.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kevin Tonon
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-11-03 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rake
|
@@ -57,26 +57,28 @@ files:
|
|
57
57
|
- bin/cog
|
58
58
|
- Default.cogfile
|
59
59
|
- LICENSE
|
60
|
-
- templates/c++/
|
61
|
-
- templates/
|
62
|
-
- templates/
|
63
|
-
- templates/
|
64
|
-
- templates/
|
65
|
-
- templates/
|
66
|
-
- templates/
|
67
|
-
-
|
60
|
+
- templates/cog/snippets/c++/generated_warning.h.erb
|
61
|
+
- templates/cog/snippets/generated_warning.txt
|
62
|
+
- templates/cog/tool/API.rdoc.erb
|
63
|
+
- templates/cog/tool/Gemfile.erb
|
64
|
+
- templates/cog/tool/generator.rb.erb
|
65
|
+
- templates/cog/tool/LICENSE.erb
|
66
|
+
- templates/cog/tool/Rakefile.erb
|
67
|
+
- templates/cog/tool/README.markdown.erb
|
68
|
+
- templates/cog/tool/tool.gemspec.erb
|
69
|
+
- templates/cog/tool/tool.rb.erb
|
70
|
+
- templates/cog/tool/version.rb.erb
|
71
|
+
- lib/cog/config/cogfile.rb
|
68
72
|
- lib/cog/config.rb
|
69
|
-
- lib/cog/
|
70
|
-
- lib/cog/
|
71
|
-
- lib/cog/
|
72
|
-
- lib/cog/mixins/mirror.rb
|
73
|
-
- lib/cog/mixins/uses_templates.rb
|
74
|
-
- lib/cog/mixins.rb
|
73
|
+
- lib/cog/errors.rb
|
74
|
+
- lib/cog/generator.rb
|
75
|
+
- lib/cog/spec_helpers/matchers/match_maker.rb
|
75
76
|
- lib/cog/spec_helpers/matchers.rb
|
76
77
|
- lib/cog/spec_helpers/runner.rb
|
77
78
|
- lib/cog/spec_helpers.rb
|
79
|
+
- lib/cog/tool.rb
|
80
|
+
- lib/cog/version.rb
|
78
81
|
- lib/cog.rb
|
79
|
-
- lib/cog_version.rb
|
80
82
|
- API.rdoc
|
81
83
|
homepage: https://github.com/ktonon/cog
|
82
84
|
licenses: []
|
data/lib/cog/cogfile.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Cog
|
2
|
-
|
3
|
-
# In your project's +Cogfile+, +self+ has been set to an instance of this class.
|
4
|
-
#
|
5
|
-
# ==== Example +Cogfile+
|
6
|
-
# cog_dir 'cog'
|
7
|
-
# app_dir 'src'
|
8
|
-
# language 'c++'
|
9
|
-
#
|
10
|
-
# Typing `cog init` will create a +Cogfile+ in the present working directory.
|
11
|
-
#
|
12
|
-
# +Cogfile+ files are used to configure an instance of Config.
|
13
|
-
class Cogfile
|
14
|
-
|
15
|
-
def initialize(config) # :nodoc:
|
16
|
-
@config = config
|
17
|
-
end
|
18
|
-
|
19
|
-
# Interpret the Cogfile and initialize @config
|
20
|
-
def interpret # :nodoc:
|
21
|
-
eval File.read(@config.cogfile_path), binding
|
22
|
-
rescue Exception => e
|
23
|
-
raise CogfileError.new(e.to_s)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Define the directory in which to place Ruby generators and +ERB+ templates.
|
27
|
-
# ==== Arguments
|
28
|
-
# * +path+ - A file system path
|
29
|
-
# * +absolute+ - If false, the path is relative to the directory containing the +Cogfile+
|
30
|
-
def cog_dir(path, absolute=false)
|
31
|
-
@config.instance_eval do
|
32
|
-
@cog_dir = absolute ? path : File.join(project_root, path)
|
33
|
-
@generator_dir = File.join @cog_dir, 'generators'
|
34
|
-
@template_dir = File.join @cog_dir, 'templates'
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Define the directory in which to place generated application source code.
|
39
|
-
# ==== Arguments
|
40
|
-
# * +path+ - A file system path
|
41
|
-
# * +absolute+ - If false, the path is relative to the directory containing the +Cogfile+
|
42
|
-
def app_dir(path, absolute=false)
|
43
|
-
@config.instance_eval do
|
44
|
-
@app_dir = absolute ? path : File.join(project_root, path)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Define the default language in which to generated application source code.
|
49
|
-
# ==== Arguments
|
50
|
-
# * +lang+ - A code for the language. Acceptable values are <tt>c++</tt>.
|
51
|
-
def language(lang)
|
52
|
-
@config.instance_eval do
|
53
|
-
@language = lang
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# For wrapping errors which occur during the processing of a +Cogfile+.
|
59
|
-
class CogfileError < StandardError
|
60
|
-
def message
|
61
|
-
"in Cogfile, " + super
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
data/lib/cog/meta.rb
DELETED
data/lib/cog/meta/gen_gen.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'cog/mixins/uses_templates'
|
2
|
-
require 'cog/config'
|
3
|
-
|
4
|
-
module Cog
|
5
|
-
module Meta
|
6
|
-
|
7
|
-
# An abstract generator generator.
|
8
|
-
#
|
9
|
-
# Subclasses define generators which make other generators.
|
10
|
-
class GenGen
|
11
|
-
|
12
|
-
include Mixins::UsesTemplates
|
13
|
-
|
14
|
-
# Create a ruby generator from a template.
|
15
|
-
#
|
16
|
-
# === Parameters
|
17
|
-
# * +ruby_template+ - name of the ruby template. This is a template
|
18
|
-
# which is distributed in the cog gem. It is relative to
|
19
|
-
# <tt>templates/</tt>
|
20
|
-
# * +generator_name+ - name of the generator
|
21
|
-
#
|
22
|
-
# === Options
|
23
|
-
# * <tt>:language</tt> - only <tt>'c++'</tt> is accepted at this time
|
24
|
-
# * <tt>:package</tt> - slash (/) separated path which will prefix
|
25
|
-
# +generator_name+
|
26
|
-
# * <tt>:binding</tt> - specify an alternate binding to use when resolving
|
27
|
-
# the +ERB+ template. If none is provided +self.binding+ will be used.
|
28
|
-
def stamp_generator(ruby_template, generator_name, opt={})
|
29
|
-
template = File.join Config.gem_dir, 'templates', "#{ruby_template}.rb"
|
30
|
-
target = "#{generator_name}.rb"
|
31
|
-
target = File.join opt[:package], target if opt[:package]
|
32
|
-
target = File.join 'generators', target
|
33
|
-
stamp template,
|
34
|
-
:target => target,
|
35
|
-
:target_type => :cog,
|
36
|
-
:use_absolute_path => true,
|
37
|
-
:binding => opt[:binding]
|
38
|
-
end
|
39
|
-
|
40
|
-
# Create an app module template from a template.
|
41
|
-
#
|
42
|
-
# === Parameters
|
43
|
-
# * +source_template+ - name of the source template. This is a template
|
44
|
-
# which is distributed in the cog gem. It is relative to
|
45
|
-
# <tt>templates/{language}/</tt>, where language is specified by the
|
46
|
-
# <tt>:language</tt> option. Do not include any file extension such as
|
47
|
-
# <tt>.h</tt> (the <tt>:language</tt> will also determine this)
|
48
|
-
# * +module_name+ - name of the module. For languages like <tt>:c++</tt>,
|
49
|
-
# two templates will be generated (i.e. one <tt>.h</tt> and one
|
50
|
-
# <tt>.cpp</tt>)
|
51
|
-
#
|
52
|
-
# === Options
|
53
|
-
# * <tt>:language</tt> - only <tt>'c++'</tt> is accepted at this time
|
54
|
-
# * <tt>:package</tt> - slash (/) separated path which will prefix
|
55
|
-
# +module_name+
|
56
|
-
# * <tt>:binding</tt> - specify an alternate binding to use when resolving
|
57
|
-
# the +ERB+ template. If none is provided +self.binding+ will be used.
|
58
|
-
def stamp_module(source_template, module_name, opt={})
|
59
|
-
lang = opt[:language] || 'c++'
|
60
|
-
extensions_for_language(lang).each do |ext|
|
61
|
-
template = File.join Config.gem_dir, 'templates', lang, "#{source_template}.#{ext}"
|
62
|
-
target = "#{module_name}.#{ext}"
|
63
|
-
target = File.join opt[:package], target if opt[:package]
|
64
|
-
target = File.join 'templates', target
|
65
|
-
stamp template,
|
66
|
-
:target => target,
|
67
|
-
:target_type => :cog,
|
68
|
-
:use_absolute_path => true,
|
69
|
-
:binding => opt[:binding]
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
def extensions_for_language(lang)
|
75
|
-
case lang.to_s
|
76
|
-
when /(cpp|c\+\+)/i
|
77
|
-
[:h, :cpp]
|
78
|
-
else
|
79
|
-
[]
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
end
|
data/lib/cog/meta/mirror_gen.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'cog/meta/gen_gen'
|
2
|
-
|
3
|
-
module Cog
|
4
|
-
module Meta
|
5
|
-
|
6
|
-
# Generates a Cog::Mixins::Mirror and associated templates.
|
7
|
-
class MirrorGen
|
8
|
-
|
9
|
-
# Create a mirror generator
|
10
|
-
#
|
11
|
-
# === Parameters
|
12
|
-
# * +name+ - the name of the mirror. Will be forced to singular form.
|
13
|
-
def initialize(name, opt={})
|
14
|
-
@name = name.singularize
|
15
|
-
@gg = GenGen.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def filename
|
19
|
-
@name.underscore
|
20
|
-
end
|
21
|
-
|
22
|
-
def classname
|
23
|
-
@name.camelize
|
24
|
-
end
|
25
|
-
|
26
|
-
def abstract_classname
|
27
|
-
"Cog#{@name.camelize}"
|
28
|
-
end
|
29
|
-
|
30
|
-
def stamp(opt={})
|
31
|
-
opt[:binding] = binding
|
32
|
-
@gg.stamp_generator 'mirror', filename, opt
|
33
|
-
@gg.stamp_module 'mirror-abstract', "abstract_#{filename}", opt
|
34
|
-
@gg.stamp_module 'mirror-impl', filename, opt
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
data/lib/cog/mixins.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'cog/mixins/uses_templates'
|
2
|
-
|
3
|
-
module Cog
|
4
|
-
|
5
|
-
# Modules that extend your code generating classes with helper methods.
|
6
|
-
#
|
7
|
-
# * Mixins::UsesTemplates - methods for using +ERB+ template files.
|
8
|
-
# * Mixins::Mirror - code the interface in Ruby and implement in the target
|
9
|
-
# langauge.
|
10
|
-
module Mixins
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
data/lib/cog/mixins/mirror.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'cog/mixins/uses_templates'
|
2
|
-
module Cog
|
3
|
-
module Mixins
|
4
|
-
|
5
|
-
# Code the interface in Ruby and implement in the target langauge.
|
6
|
-
#
|
7
|
-
# <b>Not implemented</b>
|
8
|
-
#
|
9
|
-
# === Example
|
10
|
-
#
|
11
|
-
# In Ruby
|
12
|
-
# class Dog
|
13
|
-
# include Cog::Mixins::Mirror
|
14
|
-
#
|
15
|
-
# cog_reader :name, Cog::Type.string
|
16
|
-
# cog_accessor :age, Cog::Type.int
|
17
|
-
#
|
18
|
-
# meth :speak
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
# In C++
|
22
|
-
# class CogDog
|
23
|
-
# {
|
24
|
-
# protected:
|
25
|
-
# char* _name;
|
26
|
-
# int _age;
|
27
|
-
# public:
|
28
|
-
# AbstractDog();
|
29
|
-
# virtual ~AbstractDog();
|
30
|
-
#
|
31
|
-
# virtual const char* name() const { return _name; }
|
32
|
-
#
|
33
|
-
# virtual int age() const { return _age; }
|
34
|
-
# virtual void setAge(int age) { _age = age; }
|
35
|
-
#
|
36
|
-
# virtual void speak() = 0;
|
37
|
-
# };
|
38
|
-
#
|
39
|
-
# class Dog : public CogDog
|
40
|
-
# {
|
41
|
-
# public:
|
42
|
-
# Dog();
|
43
|
-
# virtual ~Dog();
|
44
|
-
#
|
45
|
-
# virtual void speak();
|
46
|
-
# };
|
47
|
-
#
|
48
|
-
# The abstract class +CogDog+ will be regenerated whenever the source Ruby
|
49
|
-
# specification is changed. The derived C++ class +Dog+ will only be
|
50
|
-
# generated once. The C++ compiler will let you know if any abstract methods
|
51
|
-
# are missing from +Dog+ when you try to instantiate it.
|
52
|
-
module Mirror
|
53
|
-
def self.included(base)
|
54
|
-
base.include UsesTemplates
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
@@ -1,152 +0,0 @@
|
|
1
|
-
require 'cog/config'
|
2
|
-
require 'erb'
|
3
|
-
|
4
|
-
module Cog
|
5
|
-
module Mixins
|
6
|
-
|
7
|
-
# Mixin for classes that can use templates to generate code
|
8
|
-
module UsesTemplates
|
9
|
-
|
10
|
-
# File extension for a snippet of the given source code language.
|
11
|
-
# ==== Example
|
12
|
-
# snippet_extension 'c++' # => 'h'
|
13
|
-
def snippet_extension(lang = 'text')
|
14
|
-
case lang
|
15
|
-
when /(c\+\+|c|objc)/i
|
16
|
-
'h'
|
17
|
-
else
|
18
|
-
'txt'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Get the template with the given name.
|
23
|
-
#
|
24
|
-
# === Parameters
|
25
|
-
# * +path+ - a path to a template file which is relative to
|
26
|
-
# Config#template_dir and does not include the +.erb+ extension.
|
27
|
-
#
|
28
|
-
# === Options
|
29
|
-
# * <tt>:absolute</tt> - set to +true+ to indicate that path is absolute
|
30
|
-
# and should not be prefixed. Default value is +false+.
|
31
|
-
#
|
32
|
-
# === Returns
|
33
|
-
# An instance of ERB.
|
34
|
-
def get_template(path, opt={})
|
35
|
-
path += '.erb'
|
36
|
-
prefix = if opt[:cog_template]
|
37
|
-
File.join Config.gem_dir, 'templates'
|
38
|
-
elsif !opt[:absolute]
|
39
|
-
Config.for_project.template_dir
|
40
|
-
end
|
41
|
-
path = File.join prefix, path unless prefix.nil?
|
42
|
-
raise Errors::MissingTemplate.new path unless File.exists? path
|
43
|
-
ERB.new File.read(path), 0, '>'
|
44
|
-
end
|
45
|
-
|
46
|
-
# Stamp this object using the template at the given path.
|
47
|
-
#
|
48
|
-
# === Parameters
|
49
|
-
# * +path+ - to the template which is relative to Config#template_dir and
|
50
|
-
# does not include the +.erb+ extension.
|
51
|
-
#
|
52
|
-
# === Options
|
53
|
-
# * <tt>:target</tt> - the destination path to the generated file which is
|
54
|
-
# relative to either Config#app_dir or Config#cog_dir, depending on the
|
55
|
-
# value of the <tt>:target_type</tt> option.
|
56
|
-
# * <tt>:target_type</tt> - either <tt>:cog</tt> or <tt>:app</tt>.
|
57
|
-
# Determines what path to prefix to the <tt>:target</tt> option. The
|
58
|
-
# default value is <tt>:app</tt>
|
59
|
-
# * <tt>:use_absolute_path</tt> - set to +true+ to indicate that path is
|
60
|
-
# absolute and should not be prefixed. Default value is +false+.
|
61
|
-
# * <tt>:binding</tt> - specify an alternate binding to use when resolving
|
62
|
-
# the +ERB+ template. If none is provided +self.binding+ will be used.
|
63
|
-
#
|
64
|
-
# === Returns
|
65
|
-
# +nil+ if generated to a file, otherwise returns the generated code as a
|
66
|
-
# string.
|
67
|
-
def stamp(path, opt={})
|
68
|
-
t = get_template path, :absolute => opt[:use_absolute_path]
|
69
|
-
b = opt[:binding] || binding
|
70
|
-
target = opt[:target]
|
71
|
-
if target.nil?
|
72
|
-
t.result(b)
|
73
|
-
else
|
74
|
-
target_type = opt[:target_type] || :app
|
75
|
-
target = case target_type.to_s
|
76
|
-
when /cog/i
|
77
|
-
File.join Config.for_project.cog_dir, target
|
78
|
-
when /app/i
|
79
|
-
File.join Config.for_project.app_dir, target
|
80
|
-
end
|
81
|
-
FileUtils.mkpath File.dirname(target) unless File.exists? target
|
82
|
-
scratch = case target_type.to_s
|
83
|
-
when /cog/i
|
84
|
-
File.join Config.for_project.cog_dir, "#{opt[:target]}.scratch"
|
85
|
-
when /app/i
|
86
|
-
File.join Config.for_project.app_dir, "#{opt[:target]}.scratch"
|
87
|
-
end
|
88
|
-
File.open(scratch, 'w') {|file| file.write t.result(b)}
|
89
|
-
unless same? target, scratch
|
90
|
-
puts "Generated #{target}"
|
91
|
-
FileUtils.mv scratch, target
|
92
|
-
else
|
93
|
-
FileUtils.rm scratch
|
94
|
-
end
|
95
|
-
nil
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# A warning that indicates a file is maintained by a generator
|
100
|
-
def generated_warning
|
101
|
-
lang = Config.for_project.language
|
102
|
-
t = get_template "snippets/#{lang}/generated_warning.#{snippet_extension lang}", :cog_template => true
|
103
|
-
t.result(binding)
|
104
|
-
end
|
105
|
-
|
106
|
-
def include_guard_begin(name)
|
107
|
-
full = "COG_INCLUDE_GUARD_#{name.upcase}"
|
108
|
-
"#ifndef #{full}\n#define #{full}"
|
109
|
-
end
|
110
|
-
|
111
|
-
def include_guard_end
|
112
|
-
"#endif // COG_INCLUDE_GUARD_[...]"
|
113
|
-
end
|
114
|
-
|
115
|
-
def namespace_begin(name)
|
116
|
-
return if name.nil?
|
117
|
-
case Config.for_project.language
|
118
|
-
when /c\+\+/
|
119
|
-
"namespace #{name} {"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def namespace_end(name)
|
124
|
-
return if name.nil?
|
125
|
-
case Config.for_project.language
|
126
|
-
when /c\+\+/
|
127
|
-
"} // namespace #{name}"
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
def same?(original, scratch) # :nodoc:
|
133
|
-
if File.exists? original
|
134
|
-
File.read(original) == File.read(scratch)
|
135
|
-
else
|
136
|
-
false
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
module Errors
|
144
|
-
# Indiciates an attempt to use a non-existant template.
|
145
|
-
class MissingTemplate < Exception
|
146
|
-
def message
|
147
|
-
'could not find the template ' + super
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|