LilyPond-Ruby 0.1.5 → 0.1.5.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
  SHA256:
3
- metadata.gz: 162f200f9fd9c6999e2ac87636abde7d74208c865ac7e255b97742b2c8e52ba7
4
- data.tar.gz: 7b497c14668f852ada9ffcc2c0a7d359892412b6aa9dd25ca0a3b84f46cbb2b2
3
+ metadata.gz: '0753909e55ec718709787b480e31ac1125cf69355e4993b278ad9ef2c7d37b78'
4
+ data.tar.gz: 47a9251087eca6fa7730ab28f04e7d383411ca2a7ddba159034ffebf351bea71
5
5
  SHA512:
6
- metadata.gz: a563f3505c5f6143583d14a6a5e2a0947f8387235fe1830cb8500deb25463ae0323c10f2dc70411f724355dec4d264bb91ecf1c651f4be5265ca7d11e3f843a2
7
- data.tar.gz: 5099230b556aaa98697e9e4619ef97185880942f37dd1962755a4a7224dd0bbc2d763837c415b3ee1fc0031bd884f2ef165d17ad2009a1c7e50d6040c764297c
6
+ metadata.gz: fc1930db2fd8263983327931b9ef14856aec59631c92a430f75fda1d1cbca99d0f42aaf1772b7806ab6211d3b65e7643a320283a6e82fb874b10fb5c14e58e0b
7
+ data.tar.gz: 9c8663c4c47e2321678fb975d2e214f3fdacf5d76bfe981c376d062ac55179d40846f285fc0d3fd0d8594cfc42e43d3965d125a4b54b0f48b8dec977fa8f5d07
@@ -1,7 +1,7 @@
1
1
  require_relative "../lilypond-ruby.rb"
2
2
 
3
- # The LilyPond class provides an interface for generating LilyPond notation.
4
- class LilyPond
3
+ # The LilyPond module provides an interface for generating LilyPond notation.
4
+ module LilyPond
5
5
  # The Builder class is responsible for building LilyPond notation.
6
6
  class Builder
7
7
  # Creates a new LilyPond Builder object.
@@ -0,0 +1,23 @@
1
+ require_relative "../lilypond-ruby.rb"
2
+
3
+ module LilyPond
4
+ class << self
5
+ attr_accessor :configuration
6
+ end
7
+
8
+ def self.configuration
9
+ @configuration ||= Configuration.new
10
+ yield(@configuration) if block_given?
11
+ @configuration
12
+ end
13
+
14
+ class Configuration
15
+ attr_accessor :default_output, :destination_directory, :lilypond_path
16
+
17
+ def initialize
18
+ @default_output = :pdf
19
+ @destination_directory = "."
20
+ @lilypond_path = File.expand_path("../../../lilypond-2.24.1/bin/lilypond", __FILE__)
21
+ end
22
+ end
23
+ end
data/lib/lilypond-ruby.rb CHANGED
@@ -1,13 +1,12 @@
1
1
  require "open3"
2
2
  require "lilypond/builder"
3
+ require "lilypond/config"
3
4
  require "guile"
4
5
 
5
- class LilyPond
6
- LILYPOND_PATH = File.expand_path("../../lilypond-2.24.1/bin/lilypond", __FILE__)
6
+ module LilyPond
7
7
  class << self
8
-
9
8
  def version
10
- output, error, status = Open3.capture3(LILYPOND_PATH, "--version")
9
+ output, error, status = Open3.capture3(path, "--version")
11
10
  if status.success?
12
11
  puts output
13
12
  else
@@ -16,7 +15,7 @@ class LilyPond
16
15
  end
17
16
 
18
17
  def version_number
19
- output, error, status = Open3.capture3(LILYPOND_PATH, "--version")
18
+ output, error, status = Open3.capture3(path, "--version")
20
19
  if status.success?
21
20
  return output.match(/GNU LilyPond (\d+\.\d+\.\d+)/)[1]
22
21
  else
@@ -24,11 +23,14 @@ class LilyPond
24
23
  end
25
24
  end
26
25
 
27
- def generate_pdf_with_lilypond(file_name, lilypond_code)
26
+ # Approved output types: `[:pdf, :svg, :png]` If none is provided, it defaults to
27
+ # LilyPond.configuration.default_output, which initializes as `:pdf`
28
+ def generate_pdf_with_lilypond(file_name, lilypond_code, output_type = nil)
28
29
  tempfile = Tempfile.new(file_name)
29
30
  tempfile.write(lilypond_code)
30
31
  tempfile.close
31
- Open3.popen3(LILYPOND_PATH, "--pdf", tempfile.path) do |stdin, stdout, stderr, wait_thr|
32
+ output_type ||= LilyPond.configuration.default_output
33
+ Open3.popen3(path, "--#{output}", tempfile.path) do |stdin, stdout, stderr, wait_thr|
32
34
  # Write the Lilypond code to stdin
33
35
  stdin.write(lilypond_code)
34
36
  stdin.close
@@ -59,5 +61,10 @@ class LilyPond
59
61
  File.delete(tempfile.path)
60
62
  end
61
63
 
64
+ private
65
+ def path
66
+ LilyPond.configuration.lilypond_path
67
+ end
68
+
62
69
  end # end self
63
70
  end # end LilyPond
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: LilyPond-Ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Whittaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-09 00:00:00.000000000 Z
11
+ date: 2023-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -30,9 +30,10 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.15.5
33
- description: "This gem provides a library to access and control Lilypond within Ruby.\nIt
34
- contains the libraries and binary files for LilyPond 2.24.1 and\nGuile 2.2.3. \n\n\nIt
35
- also provides a builder tool for generating LilyPond files dynamically\nwith Ruby.\n"
33
+ description: |
34
+ This gem provides a library to access and control Lilypond within Ruby.
35
+ It also provides a builder tool for generating LilyPond files dynamically
36
+ with Ruby.
36
37
  email: whittakerlee81@gmail.com
37
38
  executables: []
38
39
  extensions: []
@@ -41,6 +42,7 @@ files:
41
42
  - lib/guile.rb
42
43
  - lib/lilypond-ruby.rb
43
44
  - lib/lilypond/builder.rb
45
+ - lib/lilypond/config.rb
44
46
  - lilypond-2.24.1/bin/abc2ly
45
47
  - lilypond-2.24.1/bin/convert-ly
46
48
  - lilypond-2.24.1/bin/etf2ly