latex-project-template 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,11 +6,11 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", ">= 2.5.0"
10
- gem "yard", ">= 0.6.0"
9
+ gem "rspec", ">= 2.6.0"
10
+ gem "yard", ">= 0.7.2"
11
11
  gem "bundler", ">= 1.0.0"
12
- gem "jeweler", ">= 1.5.2"
12
+ gem "jeweler", ">= 1.6.4"
13
13
  gem "rcov", ">= 0"
14
14
  gem "filename", ">= 0.1.0"
15
- gem "user_config", ">= 0.0.1"
15
+ gem "user_config", ">= 0.0.2"
16
16
  end
data/Rakefile CHANGED
@@ -23,8 +23,7 @@ Jeweler::Tasks.new do |gem|
23
23
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
24
  gem.add_runtime_dependency 'git', '>= 1.2.5'
25
25
  gem.add_runtime_dependency 'filename', '>= 0.1.0'
26
- gem.add_runtime_dependency 'user_config', '>= 0.0.1'
27
- gem.add_development_dependency 'rspec', '>= 2.5.0'
26
+ gem.add_runtime_dependency 'user_config', '>= 0.0.2'
28
27
  end
29
28
  Jeweler::RubygemsDotOrgTasks.new
30
29
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -10,7 +10,7 @@ Usage: #{File.basename(__FILE__)} project [template]
10
10
 
11
11
  HELP
12
12
 
13
- Version = '0.0.2'
13
+ Version = '0.0.3'
14
14
 
15
15
  options = {
16
16
  :mode => :create
@@ -0,0 +1,3 @@
1
+ \usepackage{amsmath, amsfonts, amsthm}
2
+
3
+ \newtheorem{theorem}{Theorem}[section]
@@ -0,0 +1,6 @@
1
+ MAIN_TEX_FILE = "<%= project_name %>.tex"
2
+
3
+ # * Set environmental variables
4
+ # ENV['BIBINPUTS'] = ".:#{File.join(ENV["HOME"], "bibtex")}"
5
+
6
+ require 'latex_project_template/task'
@@ -1,9 +1,4 @@
1
- MAIN_TEX_FILE = "<%= @project_name %>.tex"
2
-
3
- # * Set environmental variables
4
- # ENV['BIBINPUTS'] = ".:#{File.join(ENV["HOME"], "bibtex")}"
5
-
6
- require 'latex_project_template/task'
1
+ <%= component('rakefile_common.erb') %>
7
2
 
8
3
  LaTeXProjectTemplate::Task.new(MAIN_TEX_FILE) do |task|
9
4
  # * Set the path of latexmk
@@ -1,7 +1,8 @@
1
1
  \documentclass[a4paper]{article}
2
- \usepackage{amsmath, amsfonts, amsthm}
3
2
 
4
- \author{<%= @profile[:name] %>}
3
+ <%= component('math_preamble.tex') %>
4
+
5
+ \author{<%= profile[:name] %>}
5
6
  \date{}
6
7
 
7
8
  \begin{document}
@@ -0,0 +1,13 @@
1
+ <%= component('rakefile_common.erb') %>
2
+
3
+ LaTeXProjectTemplate::Task.new(MAIN_TEX_FILE) do |task|
4
+ # * Set the path of latexmk
5
+ # task.latexmk.path = '/usr/bin/latexmk'
6
+ #
7
+ # * Add patterns to clean temporary files
8
+ # task.clean.include("#*#")
9
+ #
10
+ # * Default task to compile tex file. You can set :dvi, :ps, :pdf, :pdfdvi, or :pdfps.
11
+ # The default is :pdf.
12
+ task.default = :pdfdvi
13
+ end
@@ -0,0 +1 @@
1
+ default/__DOT__gitignore
@@ -0,0 +1,12 @@
1
+ \documentclass[a4paper]{jsarticle}
2
+
3
+ <%= component('math_preamble.tex') %>
4
+
5
+ \author{<%= profile[:name] %>}
6
+ \date{}
7
+
8
+ \begin{document}
9
+
10
+ \section{}
11
+
12
+ \end{document}
@@ -0,0 +1,2 @@
1
+ ---
2
+ :name: "Your Name"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{latex-project-template}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Takayuki YAMAGUCHI"]
12
- s.date = %q{2011-07-07}
12
+ s.date = %q{2011-07-08}
13
13
  s.default_executable = %q{latex-project-template}
14
14
  s.description = %q{Create LaTeX project with git from template, which uses latexmk.}
15
15
  s.email = %q{d@ytak.info}
@@ -27,17 +27,22 @@ Gem::Specification.new do |s|
27
27
  "Rakefile",
28
28
  "VERSION",
29
29
  "bin/latex-project-template",
30
+ "initial_files/component/math_preamble.tex",
31
+ "initial_files/component/rakefile_common.erb",
32
+ "initial_files/template/default/Rakefile.erb",
33
+ "initial_files/template/default/__DOT__gitignore",
34
+ "initial_files/template/default/__PROJECT__.tex.erb",
35
+ "initial_files/template/japanese/Rakefile.erb",
36
+ "initial_files/template/japanese/__IMPORT__",
37
+ "initial_files/template/japanese/__PROJECT__.tex.erb",
38
+ "initial_files/template/japanese/latexmkrc",
39
+ "initial_files/variable/profile.yaml",
30
40
  "latex-project-template.gemspec",
31
41
  "lib/latex_project_template.rb",
32
42
  "lib/latex_project_template/task.rb",
33
43
  "spec/latex_project_template_spec.rb",
34
44
  "spec/spec_helper.rb",
35
- "spec/task_spec.rb",
36
- "template/default/Rakefile.erb",
37
- "template/default/__DOT__gitignore",
38
- "template/default/__PROJECT__.tex.erb",
39
- "template/japanese/__IMPORT__",
40
- "template/japanese/latexmkrc"
45
+ "spec/task_spec.rb"
41
46
  ]
42
47
  s.homepage = %q{http://github.com/ytaka/latex-project-template}
43
48
  s.licenses = ["GPLv3"]
@@ -49,42 +54,39 @@ Gem::Specification.new do |s|
49
54
  s.specification_version = 3
50
55
 
51
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
- s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
53
- s.add_development_dependency(%q<yard>, [">= 0.6.0"])
57
+ s.add_development_dependency(%q<rspec>, [">= 2.6.0"])
58
+ s.add_development_dependency(%q<yard>, [">= 0.7.2"])
54
59
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
55
- s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
60
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
56
61
  s.add_development_dependency(%q<rcov>, [">= 0"])
57
62
  s.add_development_dependency(%q<filename>, [">= 0.1.0"])
58
- s.add_development_dependency(%q<user_config>, [">= 0.0.1"])
63
+ s.add_development_dependency(%q<user_config>, [">= 0.0.2"])
59
64
  s.add_runtime_dependency(%q<git>, [">= 1.2.5"])
60
65
  s.add_runtime_dependency(%q<filename>, [">= 0.1.0"])
61
- s.add_runtime_dependency(%q<user_config>, [">= 0.0.1"])
62
- s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
66
+ s.add_runtime_dependency(%q<user_config>, [">= 0.0.2"])
63
67
  else
64
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
65
- s.add_dependency(%q<yard>, [">= 0.6.0"])
68
+ s.add_dependency(%q<rspec>, [">= 2.6.0"])
69
+ s.add_dependency(%q<yard>, [">= 0.7.2"])
66
70
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
67
- s.add_dependency(%q<jeweler>, [">= 1.5.2"])
71
+ s.add_dependency(%q<jeweler>, [">= 1.6.4"])
68
72
  s.add_dependency(%q<rcov>, [">= 0"])
69
73
  s.add_dependency(%q<filename>, [">= 0.1.0"])
70
- s.add_dependency(%q<user_config>, [">= 0.0.1"])
74
+ s.add_dependency(%q<user_config>, [">= 0.0.2"])
71
75
  s.add_dependency(%q<git>, [">= 1.2.5"])
72
76
  s.add_dependency(%q<filename>, [">= 0.1.0"])
73
- s.add_dependency(%q<user_config>, [">= 0.0.1"])
74
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
77
+ s.add_dependency(%q<user_config>, [">= 0.0.2"])
75
78
  end
76
79
  else
77
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
78
- s.add_dependency(%q<yard>, [">= 0.6.0"])
80
+ s.add_dependency(%q<rspec>, [">= 2.6.0"])
81
+ s.add_dependency(%q<yard>, [">= 0.7.2"])
79
82
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
80
- s.add_dependency(%q<jeweler>, [">= 1.5.2"])
83
+ s.add_dependency(%q<jeweler>, [">= 1.6.4"])
81
84
  s.add_dependency(%q<rcov>, [">= 0"])
82
85
  s.add_dependency(%q<filename>, [">= 0.1.0"])
83
- s.add_dependency(%q<user_config>, [">= 0.0.1"])
86
+ s.add_dependency(%q<user_config>, [">= 0.0.2"])
84
87
  s.add_dependency(%q<git>, [">= 1.2.5"])
85
88
  s.add_dependency(%q<filename>, [">= 0.1.0"])
86
- s.add_dependency(%q<user_config>, [">= 0.0.1"])
87
- s.add_dependency(%q<rspec>, [">= 2.5.0"])
89
+ s.add_dependency(%q<user_config>, [">= 0.0.2"])
88
90
  end
89
91
  end
90
92
 
@@ -13,16 +13,21 @@ class LaTeXProjectTemplate
13
13
  class Configuration
14
14
  TEMPLATE_DIRECTORY = 'template'
15
15
  VARIABLE_DIRECTORY = 'variable'
16
+ COMPONENT_DIRECTORY = 'component'
16
17
  DEFAULT_PROFILE_YAML = { :name => "Your Name" }
17
18
 
18
19
  def self.create_new_config(home_path = nil)
19
- config = LPTConfig.new(DEFAULT_CONFIG, :home => home_path)
20
- dir = config.directory
21
- FileUtils.cp_r("#{File.expand_path(File.join(File.dirname(__FILE__), '../template/'))}", dir)
22
- vars_dir = File.join(dir, VARIABLE_DIRECTORY)
23
- FileUtils.mkdir_p(vars_dir)
24
- open(File.join(vars_dir, 'profile.yaml'), 'w') do |f|
25
- f.print DEFAULT_PROFILE_YAML.to_yaml
20
+ begin
21
+ config = LPTConfig.new(DEFAULT_CONFIG, :home => home_path, :new_directory => true)
22
+ dir = config.directory
23
+ Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), '../initial_files/*'))).each do |path|
24
+ FileUtils.cp_r(path, dir)
25
+ end
26
+ git = Git.init(dir)
27
+ git.add
28
+ git.commit("Create initial template.")
29
+ rescue UserConfig::DirectoryExistenceError
30
+ $stderr.puts "Can not new configuration directory."
26
31
  end
27
32
  end
28
33
 
@@ -68,6 +73,32 @@ class LaTeXProjectTemplate
68
73
  end
69
74
  vars
70
75
  end
76
+
77
+ def component(name)
78
+ if path = @user_config.exist?(File.join(COMPONENT_DIRECTORY, name))
79
+ return LaTeXProjectTemplate::Component.new(path)
80
+ end
81
+ nil
82
+ end
83
+ end
84
+
85
+ class Component
86
+ attr_reader :path
87
+
88
+ def initialize(path)
89
+ @path = path
90
+ end
91
+
92
+ def evaluate(erb_obj)
93
+ if /\.erb$/ =~ @path
94
+ erb_obj.instance_exec(@path) do |path|
95
+ erb = ERB.new(File.read(path))
96
+ erb.result(binding)
97
+ end
98
+ else
99
+ File.read(@path)
100
+ end
101
+ end
71
102
  end
72
103
 
73
104
  class Directory
@@ -162,10 +193,22 @@ class LaTeXProjectTemplate
162
193
  class ErbObject
163
194
  attr_reader :project_name
164
195
 
165
- def initialize(project_name, variables)
196
+ def initialize(project_name, variables, config)
166
197
  @project_name = project_name
198
+ @__config = config
167
199
  variables.each do |key, val|
168
200
  instance_variable_set("@#{key}", val)
201
+ self.class.class_eval do
202
+ attr_reader key.intern
203
+ end
204
+ end
205
+ end
206
+
207
+ def component(name)
208
+ if c = @__config.component(name)
209
+ c.evaluate(self)
210
+ else
211
+ ''
169
212
  end
170
213
  end
171
214
  end
@@ -183,7 +226,7 @@ class LaTeXProjectTemplate
183
226
  end
184
227
 
185
228
  def create_files
186
- erb_obj = LaTeXProjectTemplate::ErbObject.new(@project_name, @config.user_variables)
229
+ erb_obj = LaTeXProjectTemplate::ErbObject.new(@project_name, @config.user_variables, @config)
187
230
  created_files = @template.copy_to_directory(@target_dir, erb_obj)
188
231
  @template.files_to_import.each do |name, files|
189
232
  if template_to_import = @config.template_exist?(name)
@@ -13,6 +13,10 @@ describe LaTeXProjectTemplate::Configuration do
13
13
  it "should create directory." do
14
14
  LaTeXProjectTemplate::Configuration.create_new_config(@home_directory)
15
15
  File.directory?(@home_directory).should be_true
16
+ dir = File.join(@home_directory_absolute, '.latex_project_template')
17
+ File.exist?(File.join(dir, 'template')).should be_true
18
+ File.exist?(File.join(dir, 'variable')).should be_true
19
+ File.exist?(File.join(dir, 'component')).should be_true
16
20
  end
17
21
 
18
22
  it "should return config directory." do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: latex-project-template
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Takayuki YAMAGUCHI
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-07 00:00:00 +09:00
13
+ date: 2011-07-08 00:00:00 +09:00
14
14
  default_executable: latex-project-template
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 2.5.0
23
+ version: 2.6.0
24
24
  type: :development
25
25
  prerelease: false
26
26
  version_requirements: *id001
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 0.6.0
34
+ version: 0.7.2
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: *id002
@@ -53,7 +53,7 @@ dependencies:
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 1.5.2
56
+ version: 1.6.4
57
57
  type: :development
58
58
  prerelease: false
59
59
  version_requirements: *id004
@@ -86,7 +86,7 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.0.1
89
+ version: 0.0.2
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: *id007
@@ -119,21 +119,10 @@ dependencies:
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 0.0.1
122
+ version: 0.0.2
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: *id010
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
- requirement: &id011 !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: 2.5.0
134
- type: :development
135
- prerelease: false
136
- version_requirements: *id011
137
126
  description: Create LaTeX project with git from template, which uses latexmk.
138
127
  email: d@ytak.info
139
128
  executables:
@@ -152,17 +141,22 @@ files:
152
141
  - Rakefile
153
142
  - VERSION
154
143
  - bin/latex-project-template
144
+ - initial_files/component/math_preamble.tex
145
+ - initial_files/component/rakefile_common.erb
146
+ - initial_files/template/default/Rakefile.erb
147
+ - initial_files/template/default/__DOT__gitignore
148
+ - initial_files/template/default/__PROJECT__.tex.erb
149
+ - initial_files/template/japanese/Rakefile.erb
150
+ - initial_files/template/japanese/__IMPORT__
151
+ - initial_files/template/japanese/__PROJECT__.tex.erb
152
+ - initial_files/template/japanese/latexmkrc
153
+ - initial_files/variable/profile.yaml
155
154
  - latex-project-template.gemspec
156
155
  - lib/latex_project_template.rb
157
156
  - lib/latex_project_template/task.rb
158
157
  - spec/latex_project_template_spec.rb
159
158
  - spec/spec_helper.rb
160
159
  - spec/task_spec.rb
161
- - template/default/Rakefile.erb
162
- - template/default/__DOT__gitignore
163
- - template/default/__PROJECT__.tex.erb
164
- - template/japanese/__IMPORT__
165
- - template/japanese/latexmkrc
166
160
  has_rdoc: true
167
161
  homepage: http://github.com/ytaka/latex-project-template
168
162
  licenses:
@@ -177,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
171
  requirements:
178
172
  - - ">="
179
173
  - !ruby/object:Gem::Version
180
- hash: -1327005119075032685
174
+ hash: -691823316385091189
181
175
  segments:
182
176
  - 0
183
177
  version: "0"
@@ -1,3 +0,0 @@
1
- default/__PROJECT__.tex
2
- default/Rakefile.erb
3
- default/__DOT__gitignore