songbookize 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5804912b54b4f7e9eb0e75b4ed611e7a7d94aa4
4
- data.tar.gz: 4472d45c0fa525c07e2b88a7aecf15da0b8d77a1
3
+ metadata.gz: 17bb2cdb82cadab3871c628e9a5e2b5f27df93da
4
+ data.tar.gz: 2f2f873b506e890dd6eacbe4f1dd4501cfcb0720
5
5
  SHA512:
6
- metadata.gz: 3be94c1a03624d912a90f56bbd2d6639b249e227c03732fda99a0407d9932716410a897a4084dacd32a2fc2e2ae7a7bffb19f1e9dd0a0b887ce0003521f172eb
7
- data.tar.gz: 6df99920eaf27c4c96bcdff1717ecd0fff62d1131532d96d536a64394327283ba67906bb3dc25fcc8d7667f0bc750fa5aeec761ca0433f3b0033814cf16e4243
6
+ metadata.gz: da3d29f7e87ba694d2173692d67aecacf745473c65107fa65afd396d73614e77d53565a9d4c4487f5bff735f072eee6173c52287bc1d2ee069783f83c4b63389
7
+ data.tar.gz: 7217631176f13d507bb3ebe8be51775593e7121ebea536352cff66fdd55a5060092b4f78fd914fff27625dcaf0ee5f1f1e6aa0af96d89afb73ded70cb55fd8f9
data/Creator/capo.rb CHANGED
@@ -2,17 +2,17 @@ class Song
2
2
  def capo!(fret)
3
3
  capo_melody!(fret) unless melody.nil? or melody.empty?
4
4
  verses.each{|v| v.capo!(fret)}
5
- %[key K].each{|k| info[k] = Song.capo(info[k], fret) if info.include?(k)}
5
+ %w[key K].each{|k| info[k] = Song.capo(info[k], fret) if info.include?(k)}
6
6
  return self
7
7
  end
8
8
 
9
9
  OCTAVE ||= %w[A Bb B C Db D Eb E F Gb G Ab]
10
10
  def self.capo(chord, fret)
11
- idx = OCTAVE.index(chord[0])
12
- range = 0
11
+ idx = OCTAVE.index(chord[0..1])
12
+ range = 0..1
13
13
  if idx.nil? then
14
- idx = OCTAVE.index(chord[0..1])
15
- range = 0..1
14
+ idx = OCTAVE.index(chord[0])
15
+ range = 0
16
16
  end
17
17
  raise StandardError.new("Unknown Chords #{chord}!") if idx.nil?
18
18
 
@@ -4,6 +4,7 @@ require 'date'
4
4
  require 'slim'
5
5
  require 'ostruct'
6
6
  require 'kramdown'
7
+ require 'coffee-script'
7
8
  require_relative 'song'
8
9
 
9
10
  class Song
@@ -70,6 +71,10 @@ class SongBook
70
71
  File.write("#{dir}/#{song.slug}.html", Slim::Template.new(File.join(File.dirname(__FILE__),'song.slim')).render(scope))
71
72
  File.write("#{dir}/#{song.slug}_slideable.html", Slim::Template.new(File.join(File.dirname(__FILE__),'slideable_song.slim')).render(scope))
72
73
  end
74
+ Dir["#{File.dirname(__FILE__)}/*.coffee"].each do |c|
75
+ log.debug "Compiling #{c}"
76
+ File.write("#{dir}/#{File.basename(c, ".coffee")}.js", CoffeeScript.compile(File.read(c)))
77
+ end
73
78
  FileUtils.cp Dir["#{File.dirname(__FILE__)}/resources/*"], "#{dir}/"
74
79
  end
75
80
  end
@@ -10,7 +10,7 @@ class Song
10
10
  res = lyrics.dup
11
11
  chords.each do |chord, pos|
12
12
  cmd = %|\\ch{#{chord}}|
13
- res = res.ljust(pos + offset + 1).insert(pos + offset, cmd)
13
+ res = res.ljust(pos + offset + 1, " ").insert(pos + offset, cmd) # Note, this is a unicode emspace
14
14
  offset += cmd.length
15
15
  end
16
16
 
@@ -40,7 +40,7 @@ class Song
40
40
  end
41
41
  parts << "\\section{#{title}}"
42
42
  parts << "\\songdesc{#{desc}}\n\n" if desc
43
- parts << "\\#{(melody.nil? or melody.empty?) ? "nm" : ""}songinfo{#{"Key of #{key}"}}{#{author}}"
43
+ parts << "\\#{(melody.nil? or melody.empty?) ? "nm" : ""}songinfo{#{key.empty? ? "No Key Specified" : "Key of #{key}"}}{#{author}}"
44
44
  parts << "\\melody{#{slug}001.eps}" unless melody.nil? or melody.empty?
45
45
  # parts << "\\begin{abc}[name=#{title.downcase.gsub(/[^\w]/, "")}]\n#{melody}\\end{abc}" unless melody.nil? or melody.empty?
46
46
  # parts << "\\begin{lilypond}[quoted,staffsize=26]\n#{lilypond}\\end{lilypond}" unless melody.nil? or melody.empty?
@@ -10,6 +10,7 @@ html
10
10
  javascript:
11
11
  window.ABCJS.plugin.auto_render_threshold = 100;
12
12
  window.ABCJS.plugin.hide_abc = true;
13
+ script src="songbook.js"
13
14
  sass:
14
15
  body
15
16
  max-width: 1000px
@@ -131,4 +132,8 @@ coffee:
131
132
  verse_index++ if verse_index < verses.length - 1
132
133
  when "Backspace"
133
134
  window.history.back()
135
+ when "ArrowUp"
136
+ window.transposeUp()
137
+ when "ArrowDown"
138
+ window.transposeDown()
134
139
  updateVerses()
data/Creator/song.slim CHANGED
@@ -5,68 +5,71 @@ html
5
5
  / style type="text/css"==open(URI.encode("https://fonts.googleapis.com/css?family=Bitter:400,700|Muli:300,400,i|Montserrat:400,700|Fira+Mono|Junge")).read
6
6
  script src="abcjs_basic_2.3-min.js"
7
7
  script src="abcjs_plugin_2.3-min.js"
8
+ script src="https://d3js.org/d3.v4.min.js"
8
9
  javascript:
9
10
  window.ABCJS.plugin.auto_render_threshold = 100;
10
11
  window.ABCJS.plugin.hide_abc = true;
11
- sass:
12
- body
13
- max-width: 1000px
14
- margin: auto
15
- padding-top: 50px
16
- font-family: 'Junge'
17
- .lyrics
18
- line-height: 140%
19
- font-size: 140%
20
- overflow-y: hidden
21
- transform-origin: top
22
- clear: both
23
- font-family: 'Junge'
24
- margin: auto
25
- width: fit-content
26
- padding-top: 1em
12
+ script src="songbook.js"
27
13
 
28
- .chordlyrics
29
- font-family: 'Fira Mono', monospace
30
- .abcrendered
31
- margin: auto
32
- h2
33
- text-align: center
34
- .order
35
- position: relative
36
- top: 10
37
- left: 0
38
- float: right
39
- font-size: 26px
40
- font-family: 'Fira Mono', sans
41
- .chords
42
- font-family: 'Fira Mono', monospace
43
- font-weight: bold
44
- color: #08c
45
- .chorusindicator
46
- color: #0a5
47
- font-weight: bold
48
- text-align: center
49
- .chorus
50
- color: #083
51
- .author, .key
52
- font-family: 'Lora', serif
53
- font-size: 140%
54
- text-align: center
55
- font-style: italic
14
+ sass:
15
+ body
16
+ max-width: 1000px
17
+ margin: auto
18
+ padding-top: 50px
19
+ font-family: 'Junge'
20
+ .lyrics
21
+ line-height: 140%
22
+ font-size: 140%
23
+ overflow-y: hidden
24
+ transform-origin: top
25
+ clear: both
26
+ font-family: 'Junge'
27
+ margin: auto
28
+ width: fit-content
29
+ padding-top: 1em
56
30
 
57
- .author
58
- float: right
59
- margin-right: 120px
60
- .key
61
- float: left
62
- margin-left: 120px
63
- .desc
64
- clear: both
65
- margin-bottom: 2em
66
- .melody
67
- background: none
68
- border: none
69
- clear: both
31
+ .chordlyrics
32
+ font-family: 'Fira Mono', monospace
33
+ .abcrendered
34
+ margin: auto
35
+ h2
36
+ text-align: center
37
+ .order
38
+ position: relative
39
+ top: 10
40
+ left: 0
41
+ float: right
42
+ font-size: 26px
43
+ font-family: 'Fira Mono', sans
44
+ .chords
45
+ font-family: 'Fira Mono', monospace
46
+ font-weight: bold
47
+ color: #08c
48
+ .chorusindicator
49
+ color: #0a5
50
+ font-weight: bold
51
+ text-align: center
52
+ .chorus
53
+ color: #083
54
+ .author, .key
55
+ font-family: 'Lora', serif
56
+ font-size: 140%
57
+ text-align: center
58
+ font-style: italic
59
+
60
+ .author
61
+ float: right
62
+ margin-right: 120px
63
+ .key
64
+ float: left
65
+ margin-left: 120px
66
+ .desc
67
+ clear: both
68
+ margin-bottom: 2em
69
+ .melody
70
+ background: none
71
+ border: none
72
+ clear: both
70
73
  body
71
74
  .order=song.order
72
75
  a name=song.slug
@@ -0,0 +1,22 @@
1
+ OCTAVE = "A Bb B C Db D Eb E F Gb G Ab".split(" ")
2
+ window.capo = (chord, fret) ->
3
+ idx = OCTAVE.indexOf(chord[0..1])
4
+ start = 2
5
+ if idx < 0
6
+ idx = OCTAVE.indexOf(chord[0])
7
+ start = 1
8
+ throw new Exception("Unknown chord #{chord}") if idx < 0
9
+ return "#{OCTAVE[(idx + fret) % OCTAVE.length]}#{chord[start..-1]}"
10
+
11
+ window.transpose = (steps) ->
12
+ d3.selectAll(".chords").each (c) ->
13
+ $(this).text $(this).text().replace(/[^\s]+/g, (t) -> capo(t, steps))
14
+
15
+ window.currentTranspose = 0
16
+ window.transposeUp = ->
17
+ window.currentTranspose += 1
18
+ window.transpose 1
19
+
20
+ window.transposeDown = ->
21
+ window.currentTranspose -= 1
22
+ window.transpose -1
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  require_relative 'Creator/parser.rb'
3
+ require_relative 'Creator/capo.rb'
3
4
  require_relative 'Creator/latex_formatter.rb'
4
5
  require_relative 'Creator/html_formatter.rb'
5
6
  require_relative 'Creator/midi_formatter.rb'
@@ -7,6 +8,7 @@ require_relative 'Creator/midi_formatter.rb'
7
8
  def book
8
9
  unless $book
9
10
  $book = SongBook.parse("Songs")
11
+ # $book.songs.each{|s| s.capo!(2) }
10
12
  $book.preface = `tail -n+3 Readme.md | pandoc -t latex`
11
13
  end
12
14
  $book
@@ -37,35 +39,47 @@ task :preview => [:parse, :eps, :reorder] do
37
39
  end
38
40
  end
39
41
 
40
- task :build => [:parse, :eps, :reorder] do
42
+ desc "Builds PDF out of songbook."
43
+ task :pdf => [:parse, :eps, :reorder] do
41
44
  Dir.chdir("latex") do
42
45
  book.build(filename:book_name)
43
46
  end
44
47
  end
45
48
 
49
+ desc "Builds a booklet PDF out of songbook."
46
50
  task :booklet => [:parse, :eps, :reorder] do
47
51
  Dir.chdir("latex") do
48
52
  book.build(booklet:true, filename:"#{book_name}let")
49
53
  end
50
54
  end
51
55
 
56
+ desc "Converts songbook into HTML"
52
57
  task :html => [:parse, :reorder] do
53
58
  book.to_html("html")
54
59
  end
55
60
 
61
+ desc "Creates midi files for all songs with .abc tunes"
56
62
  task :midi => [:parse, :reorder] do
57
63
  book.to_midi("html/midi")
58
64
  end
59
65
 
66
+ desc "Creates javascript / JSON descriptions of the songbook"
60
67
  task :info => [:parse] do
61
68
  File.write("html/#{book_name}.json", book.json_info)
62
69
  File.write("html/#{book_name}.js", book.jsonp_info)
63
70
  File.write("html/songbook.json", book.json_info)
64
71
  end
65
72
 
66
- task :default => [:midi, :html, :info, :build, :booklet] do
73
+ desc "Creates a portable single file archive of the songbook"
74
+ task :yaml => [:parse] do
75
+ File.write("html/#{book_name}.yml", book.to_yaml)
67
76
  end
68
77
 
78
+ desc "Attempts full build of all output types"
79
+ task :default => [:midi, :html, :info, :pdf, :booklet] do
80
+ end
81
+
82
+ desc "Creates a tex file for each individual song"
69
83
  task :songtex do
70
84
  b = SongBook.parse("Songs")
71
85
  Dir.chdir("latex") do
@@ -91,5 +105,5 @@ end
91
105
  task :publish => [:preview, :booklet, :info] do
92
106
  raise StandardError.new("Uncommited changes") unless `git status -s`.empty?
93
107
  system("git push")
94
- system("scp -r latex/#{book_name}.pdf latex/#{book_name}let.pdf latex/#{book_name}.json zachcapalbo.com:/var/www/files/")
108
+ system("scp -r latex/#{book_name}.pdf latex/#{book_name}let.pdf latex/#{book_name}.json #{book.info["remote_location"]}")
95
109
  end
data/Songbookize.md ADDED
@@ -0,0 +1,154 @@
1
+ # Songbookize
2
+
3
+ ## Overview
4
+
5
+ `songbookize` is a ruby gem and command for generating songbooks in the same
6
+ style as [Zach's Songbook](http://zachcapalbo.com/projects/songbook.html). You
7
+ can refer to the [source code for Zach's Songbook](https://gitlab.com/zach-geek/songbook)
8
+ for reference.
9
+
10
+ ## Installation
11
+
12
+ ### Songbookize Gem
13
+
14
+ Installing the `songbookize` command is as simple as
15
+
16
+ ```
17
+ gem install songbookize
18
+ ```
19
+
20
+ This is enough to compile songbooks into HTML or YAML.
21
+
22
+ ### Latex Dependencies
23
+
24
+ In order to generate the nice pdf songbooks and songbooklets, you'll need to
25
+ have LaTeX and a number of packages installed. If you're on Linux, the best
26
+ way to install everything is to install everything in the [Dockerfile](https://hub.docker.com/r/zachgeek/songbook-builder/~/dockerfile/).
27
+
28
+ On Windows, you can make it work with a LaTeX package like [MiKTeX](https://miktex.org/),
29
+ but it's tricky. Good luck.
30
+
31
+ ### Docker Image
32
+
33
+ If installing all of the dependencies is too much work, there's a handy
34
+ [Docker Image](https://hub.docker.com/r/zachgeek/songbook-builder/) you can use
35
+ instead.
36
+
37
+ To use it, run something like:
38
+
39
+ ```
40
+ docker run --rm -ti -v /path/to/your/songbook:/songbook zachgeek/songbook-builder
41
+ ```
42
+
43
+ ## Songbook Layout
44
+
45
+ Your songbook should be contained in its own folder, with all of the `.chords`
46
+ and `.abc` files living in the `Songs` subdirectory.
47
+
48
+ ### Chords Format
49
+
50
+ The `.chords` format for songs is intended to be an easy, human readable way for
51
+ encoding song lyrics and chords.
52
+
53
+ #### Header
54
+
55
+ `.chords` files begin with a small yaml header:
56
+
57
+ ```
58
+ ---
59
+ title: A Song
60
+ key: A
61
+ desc: This is an example song
62
+ ---
63
+ ```
64
+
65
+ None of the header items are required, but some common ones are
66
+
67
+ - **title**: The song's title
68
+ - **key**: The musical key that the song is played in
69
+ - **desc**: A description of the song
70
+
71
+ #### Chords and Lyrics
72
+
73
+ After the header, chords are written with the chords on the line directly above
74
+ the lyrics that they correspond to. This is a format that has been commonplace
75
+ on the internet for decades. E.g.:
76
+
77
+ ```
78
+ C F G
79
+ This is a song about nothing
80
+ C F G Am
81
+ It doesn't mean anything at all
82
+ ```
83
+
84
+ Lyrics don't have to have chords corresponding to them. Simply omit the chord
85
+ lines, and the verses will be picked up as being without chords. E.g.:
86
+
87
+ ```
88
+ This is the second verse
89
+ But you know the chords from the first
90
+ ```
91
+
92
+ You can denote that the a chorus by putting `[Chorus:]` before it. Then, to
93
+ refer to the chorus, you can just use `[Chorus]`
94
+
95
+ #### Example
96
+
97
+ So, our whole demo song from before might come out looking like:
98
+
99
+ ```
100
+ ---
101
+ title: A Song
102
+ key: A
103
+ desc: This is an example song
104
+ ---
105
+
106
+ C F G
107
+ This is a song about nothing
108
+ C F G Am
109
+ It doesn't mean anything at all
110
+
111
+ [Chorus:]
112
+ F G
113
+ This is the chorus
114
+ D C
115
+ It has different chords
116
+
117
+ This is the second verse
118
+ But you know the chords from the first
119
+
120
+ [Chorus]
121
+
122
+ And here's one more verse
123
+ Just for good measure, for good measure!
124
+ ```
125
+
126
+ ### ABC Format
127
+
128
+ [ABC Notation](http://abcnotation.com/) is a popular text format for inscribing
129
+ melodies. Songbookize will use standard tools to parse it, so you should refer
130
+ to [online references](http://abcnotation.com/) for more information on writing
131
+ ABC notation.
132
+
133
+ A song can have a `.abc` file, a `.chords`, file, or both. If both files are
134
+ specified for a given song, both the melody and the chords will be displayed.
135
+
136
+ ### songbook.yml
137
+
138
+ `songbook.yml` describes the songbook. There are a few important keys:
139
+
140
+ - **title**: Sets the title of the song book
141
+ - **include**: Specifies a table of paths with a list of songs to copy.
142
+
143
+ For instance, you might have:
144
+
145
+ ```
146
+ ---
147
+ title: An Example Songbook
148
+ include:
149
+ "/path/to/other/songbook/Songs":
150
+ - a_song
151
+ - a_nother_song
152
+ "/path/to/other/otherSongbook/Songs":
153
+ - a_nother_nother_song
154
+ ```
data/bin/songbookize ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rake'
3
+ require 'pry'
4
+
5
+ Rake::TaskManager.record_task_metadata = true
6
+ load "#{File.dirname(__FILE__)}/../Rakefile"
7
+
8
+ if ARGV.include?('-h') or ARGV.include?('--help') then
9
+ puts "songbookize compiles a song book into html and pdf files."
10
+ puts "usage: songbookize [task]"
11
+ puts "task may be:"
12
+ puts
13
+ Rake.application.tasks.reject {|t| t.comment.nil?}.each do |t|
14
+ puts " #{t.name.ljust(20)} #{t.comment}"
15
+ end
16
+ puts
17
+ puts "default is used if no task is specified."
18
+ exit
19
+ end
20
+
21
+ yml_file = ARGV.find{|a| a.downcase.end_with?(".yml") and File.exist?(a) }
22
+
23
+ unless yml_file.nil? then
24
+ $book = YAML.load(File.read(yml_file))
25
+ ARGV.delete(yml_file)
26
+ end
27
+
28
+ Rake.application[ARGV[0] || 'default'].invoke
data/template.tex CHANGED
@@ -9,6 +9,7 @@
9
9
  \setlength{\columnsep}{0.1cm}
10
10
 
11
11
  \newunicodechar{☺}{{\fontspec{DejaVu Sans}☺}}
12
+ \newunicodechar{ }{{\fontspec{DejaVu Sans} }}
12
13
 
13
14
  \setlength{\oddsidemargin}{2.0cm}
14
15
  \setlength{\evensidemargin}{2.5cm}
@@ -20,6 +21,8 @@
20
21
  \setdvipstargetpages
21
22
  \fi
22
23
 
24
+ \setpdftargetpages
25
+
23
26
  \ifprintoption % tweak dvi output only for final printing
24
27
  \special{!TeXDict begin /landplus90{true}store end}
25
28
  \special{!TeXDict begin <</Tumble true>> setpagedevice end}
metadata CHANGED
@@ -1,19 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: songbookize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Capalbo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-29 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2018-02-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: slim
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sass
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: kramdown
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coffee-script
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
13
97
  description: Generate your own PDF/HTML songbook.
14
98
  email: zach.geek@gmail.com
15
99
  executables:
16
- - bookize
100
+ - songbookize
17
101
  extensions: []
18
102
  extra_rdoc_files: []
19
103
  files:
@@ -25,14 +109,16 @@ files:
25
109
  - Creator/slideable_song.slim
26
110
  - Creator/song.rb
27
111
  - Creator/song.slim
112
+ - Creator/songbook.coffee
28
113
  - Creator/songbook.slim
29
114
  - Creator/tv.slim
30
115
  - LICENSE
31
116
  - Rakefile
32
117
  - Readme.md
33
- - bin/bookize
118
+ - Songbookize.md
119
+ - bin/songbookize
34
120
  - template.tex
35
- homepage: https://github.com/zach-capalbo/zachs-songbook
121
+ homepage: https://gitlab.com/zach-geek/songbook
36
122
  licenses:
37
123
  - MIT
38
124
  metadata: {}
data/bin/bookize DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'rake'
3
- require 'pry'
4
- load "#{File.dirname(__FILE__)}/../Rakefile"
5
-
6
- Rake.application[ARGV[0] || 'default'].invoke