escpos 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 07e5de3027f521cd1b3ed0be7c34be9bc54fc9d5
4
+ data.tar.gz: 0b48cb01f97e2e1bc77e4d8deb88711f3d163322
5
+ SHA512:
6
+ metadata.gz: 76c976c0f10b0b418d57971bbcba86850d01622efb0ef70585dd0ac393d14dbbab0b1cad7b0ec8c96acb6e1bf7456c853ed438251ca87863427c231990f87f73
7
+ data.tar.gz: 7aa7b8cf020f4d2889b7f80fbceb9446dd0a5108dfa5b72615fb03f38b6a2c2ae1c2c14b4c4662c48d0198c5d6ee3de2cbe6abd88c4c48ea2c4b117e340b9bcf
@@ -0,0 +1,69 @@
1
+ # Compiled source #
2
+ ###################
3
+ *.com
4
+ *.class
5
+ *.dll
6
+ *.exe
7
+ *.o
8
+ *.so
9
+
10
+ # Packages #
11
+ ############
12
+ # it's better to unpack these files and commit the raw source
13
+ # git has its own built in compression methods
14
+ *.7z
15
+ *.dmg
16
+ *.gz
17
+ *.iso
18
+ *.jar
19
+ *.rar
20
+ *.tar
21
+ *.zip
22
+
23
+ # Logs and databases #
24
+ ######################
25
+ *.log
26
+ *.sql
27
+ *.sqlite
28
+ *.sqlite3
29
+
30
+ # OS generated files #
31
+ ######################
32
+ .DS_Store
33
+ .DS_Store?
34
+ ._*
35
+ .Spotlight-V100
36
+ .Trashes
37
+ ehthumbs.db
38
+ Thumbs.db
39
+
40
+ # Rails
41
+ *.rbc
42
+ *.sassc
43
+ .sass-cache
44
+ capybara-*.html
45
+ .rspec
46
+ /log
47
+ /tmp
48
+ /db/*.sqlite3
49
+ /public/system
50
+ /coverage/
51
+ /spec/tmp
52
+ **.orig
53
+ rerun.txt
54
+ pickle-email-*.html
55
+ config/initializers/secret_token.rb
56
+ config/secrets.yml
57
+
58
+ ## Environment normalisation:
59
+ /.bundle
60
+ /vendor/bundle
61
+
62
+ # these should all be checked in to normalise the environment:
63
+ # Gemfile.lock, .ruby-version, .ruby-gemset
64
+
65
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
66
+ .rvmrc
67
+
68
+ pkg/*
69
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in escpos.gemspec
4
+ gemspec
@@ -0,0 +1,87 @@
1
+ # Escpos
2
+
3
+ A ruby implementation of ESC/POS (thermal) printer command specification.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'escpos'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install escpos
20
+
21
+ ## Usage
22
+
23
+ ```ruby
24
+ @printer = Escpos::Printer.new
25
+ @printer.write "Some text"
26
+
27
+ @printer.to_escpos # returns ESC/POS data ready to be sent to printer
28
+ # on linux this can be piped directly to /dev/usb/lp0
29
+ # with network printer sent directly to printer socket
30
+ # with serial port printer it can be sent directly to the serial port
31
+
32
+ @printer.to_base64 # returns base64 encoded ESC/POS data
33
+
34
+ # using report class
35
+
36
+ # my_report.rb:
37
+ class MyReport < Escpos::Report
38
+ def item(text)
39
+ @count ||= 0
40
+ @count += 1
41
+ quad_text "#{@count}. #{text}"
42
+ end
43
+ end
44
+
45
+ ```
46
+
47
+ ```erb
48
+ <% # my_report.erb: %>
49
+ <%= item "First item" %>
50
+ <%= item "Second item" %>
51
+ <%= item "Third item" %>
52
+ ```
53
+
54
+ ```ruby
55
+ # usage:
56
+
57
+ report = MyReport.new 'path/to/my_report.erb'
58
+ @printer.write report.render
59
+ @printer.cut!
60
+ # @printer.to_escpos or @printer.to_base64 contains resulting ESC/POS data
61
+ ```
62
+
63
+ ## Available helpers
64
+
65
+ - text: Normal text formatting
66
+ - double_height: Double height text
67
+ - quad_text, big, title header, double_width_double_height, double_height_double_width: Double width & Double height text
68
+ - double_width: Double iwdth text
69
+ - underline, u: Underlined text
70
+ - underline2, u2: Stronger underlined text
71
+ - bold, b: Bold text
72
+ - left: Align to left
73
+ - right: Align to right
74
+ - center: Align to center
75
+ - barcode: Print barcode
76
+ - partial_cut: Partially cut the paper (may not be available on all devices)
77
+ - cut: Fully cut the paper (may not be available on all devices)
78
+
79
+ ## Contributing
80
+
81
+ Bug reports and pull requests are welcome on GitHub at https://github.com/escpos/escpos.
82
+
83
+ 1. Fork it ( https://github.com/escpos/escpos/fork )
84
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
85
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
86
+ 4. Push to the branch (`git push origin my-new-feature`)
87
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "escpos"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/config ADDED
@@ -0,0 +1,13 @@
1
+ [core]
2
+ repositoryformatversion = 0
3
+ filemode = true
4
+ bare = false
5
+ logallrefupdates = true
6
+ ignorecase = true
7
+ precomposeunicode = true
8
+ [remote "origin"]
9
+ url = https://github.com/escpos/escpos.git
10
+ fetch = +refs/heads/*:refs/remotes/origin/*
11
+ [branch "master"]
12
+ remote = origin
13
+ merge = refs/heads/master
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'escpos/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "escpos"
8
+ spec.version = Escpos::VERSION
9
+ spec.authors = ["Jan Svoboda"]
10
+ spec.email = ["jan@mluv.cz"]
11
+ spec.summary = %q{A ruby implementation of ESC/POS (thermal) printer command specification.}
12
+ spec.description = %q{A ruby implementation of ESC/POS (thermal) printer command specification.}
13
+ spec.homepage = "https://github.com/escpos/escpos"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = ">= 1.9"
22
+
23
+ spec.add_development_dependency "bundler"
24
+ spec.add_development_dependency "rake"
25
+
26
+ spec.add_development_dependency "minitest", "~> 5.4.2"
27
+ end
@@ -0,0 +1,3 @@
1
+ <%= item "First item" %>
2
+ <%= item "Second item" %>
3
+ <%= item "Third item" %>
@@ -0,0 +1,15 @@
1
+ require 'escpos'
2
+
3
+ class MyReport < Escpos::Report
4
+ def item(text)
5
+ @count ||= 0
6
+ @count += 1
7
+ quad_text "#{@count}. #{text}"
8
+ end
9
+ end
10
+
11
+ report = MyReport.new File.join(__dir__, 'report.erb')
12
+ @printer.write report.render
13
+ @printer.cut!
14
+
15
+ # @printer.to_escpos or @printer.to_base64 contains resulting ESC/POS data
@@ -0,0 +1,70 @@
1
+ require "escpos/version"
2
+ require "escpos/printer"
3
+ require "escpos/helpers"
4
+ require "escpos/report"
5
+
6
+ module Escpos
7
+
8
+ # Printer hardware
9
+ HW_INIT = [ 0x1b, 0x40 ] # Clear data in buffer and reset modes
10
+ HW_SELECT = [ 0x1b, 0x3d, 0x01 ] # Printer select
11
+ HW_RESET = [ 0x1b, 0x3f, 0x0a, 0x00 ] # Reset printer hardware
12
+
13
+ # Feed control sequences
14
+ CTL_LF = [ 0x0a ] # Print and line feed
15
+ CTL_FF = [ 0x0c ] # Form feed
16
+ CTL_CR = [ 0x0d ] # Carriage return
17
+ CTL_HT = [ 0x09 ] # Horizontal tab
18
+ CTL_VT = [ 0x0b ] # Vertical tab
19
+
20
+ # Paper
21
+ PAPER_FULL_CUT = [ 0x1d, 0x56, 0x00 ] # Full paper cut
22
+ PAPER_PARTIAL_CUT = [ 0x1d, 0x56, 0x01 ] # Partial paper cut
23
+
24
+ # Cash Drawer
25
+ CD_KICK_2 = [ 0x1b, 0x70, 0x00 ] # Send pulse to pin 2
26
+ CD_KICK_5 = [ 0x1b, 0x70, 0x01 ] # Send pulse to pin 5
27
+
28
+ # Text formating
29
+ TXT_NORMAL = [ 0x1b, 0x21, 0x00 ] # Normal text
30
+ TXT_2HEIGHT = [ 0x1b, 0x21, 0x10 ] # Double height text
31
+ TXT_2WIDTH = [ 0x1b, 0x21, 0x20 ] # Double width text
32
+ TXT_4SQUARE = [ 0x1b, 0x21, 0x30 ] # Quad area text
33
+ TXT_UNDERL_OFF = [ 0x1b, 0x2d, 0x00 ] # Underline font OFF
34
+ TXT_UNDERL_ON = [ 0x1b, 0x2d, 0x01 ] # Underline font 1
35
+ TXT_UNDERL2_ON = [ 0x1b, 0x2d, 0x02 ] # Underline font 2
36
+ TXT_BOLD_OFF = [ 0x1b, 0x45, 0x00 ] # Bold font OFF
37
+ TXT_BOLD_ON = [ 0x1b, 0x45, 0x01 ] # Bold font ON
38
+ TXT_FONT_A = [ 0x1b, 0x4d, 0x00 ] # Font type A
39
+ TXT_FONT_B = [ 0x1b, 0x4d, 0x01 ] # Font type B
40
+ TXT_ALIGN_LT = [ 0x1b, 0x61, 0x00 ] # Left justification
41
+ TXT_ALIGN_CT = [ 0x1b, 0x61, 0x01 ] # Centering
42
+ TXT_ALIGN_RT = [ 0x1b, 0x61, 0x02 ] # Right justification
43
+
44
+ # Barcodes
45
+ BARCODE_TXT_OFF = [ 0x1d, 0x48, 0x00 ] # HRI barcode chars OFF
46
+ BARCODE_TXT_ABV = [ 0x1d, 0x48, 0x01 ] # HRI barcode chars above
47
+ BARCODE_TXT_BLW = [ 0x1d, 0x48, 0x02 ] # HRI barcode chars below
48
+ BARCODE_TXT_BTH = [ 0x1d, 0x48, 0x03 ] # HRI barcode chars both above and below
49
+ BARCODE_FONT_A = [ 0x1d, 0x66, 0x00 ] # Font type A for HRI barcode chars
50
+ BARCODE_FONT_B = [ 0x1d, 0x66, 0x01 ] # Font type B for HRI barcode chars
51
+ BARCODE_HEIGHT = [ 0x1d, 0x68 ] # Barcode Height (1 - 255)
52
+ BARCODE_WIDTH = [ 0x1d, 0x77 ] # Barcode Width (2 - 6)
53
+ BARCODE_UPC_A = [ 0x1d, 0x6b, 0x00 ] # Barcode type UPC-A
54
+ BARCODE_UPC_E = [ 0x1d, 0x6b, 0x01 ] # Barcode type UPC-E
55
+ BARCODE_EAN13 = [ 0x1d, 0x6b, 0x02 ] # Barcode type EAN13
56
+ BARCODE_EAN8 = [ 0x1d, 0x6b, 0x03 ] # Barcode type EAN8
57
+ BARCODE_CODE39 = [ 0x1d, 0x6b, 0x04 ] # Barcode type CODE39
58
+ BARCODE_ITF = [ 0x1d, 0x6b, 0x05 ] # Barcode type ITF
59
+ BARCODE_NW7 = [ 0x1d, 0x6b, 0x06 ] # Barcode type NW7
60
+
61
+ # Images
62
+ IMAGE = [ 0x1d, 0x76, 0x30, 0x00 ] # Start image pixel data
63
+
64
+ # Transforms an array of codes into a string
65
+ def sequence(arr_sequence)
66
+ arr_sequence.pack('U*')
67
+ end
68
+ module_function :sequence
69
+
70
+ end
@@ -0,0 +1,132 @@
1
+ module Escpos
2
+ module Helpers
3
+
4
+ # Encodes UTF-8 string to encoding acceptable for the printer
5
+ # The printer must be set to that encoding, defaults to ISO-8859-2
6
+ # Available encodings can be listed in console using Encoding.constants
7
+ def encode(data, opts = {})
8
+ data.encode(opts.fetch(:encoding, 'ISO-8859-2'), 'UTF-8', {
9
+ invalid: opts.fetch(:invalid, :replace),
10
+ undef: opts.fetch(:undef, :replace),
11
+ replace: opts.fetch(:replace, '?')
12
+ })
13
+ end
14
+
15
+ def text(data)
16
+ [
17
+ Escpos.sequence(TXT_NORMAL),
18
+ data,
19
+ Escpos.sequence(TXT_NORMAL),
20
+ ].join
21
+ end
22
+
23
+ def double_height(data)
24
+ [
25
+ Escpos.sequence(TXT_2HEIGHT),
26
+ data,
27
+ Escpos.sequence(TXT_NORMAL),
28
+ ].join
29
+ end
30
+
31
+ def quad_text(data)
32
+ [
33
+ Escpos.sequence(TXT_4SQUARE),
34
+ data,
35
+ Escpos.sequence(TXT_NORMAL),
36
+ ].join
37
+ end
38
+ alias :big :quad_text
39
+ alias :title :quad_text
40
+ alias :header :quad_text
41
+ alias :double_width_double_height :quad_text
42
+ alias :double_height_double_width :quad_text
43
+
44
+ def double_width(data)
45
+ [
46
+ Escpos.sequence(TXT_2WIDTH),
47
+ data,
48
+ Escpos.sequence(TXT_NORMAL),
49
+ ].join
50
+ end
51
+
52
+ def underline(data)
53
+ [
54
+ Escpos.sequence(TXT_UNDERL_ON),
55
+ data,
56
+ Escpos.sequence(TXT_UNDERL_OFF),
57
+ ].join
58
+ end
59
+ alias :u :underline
60
+
61
+ def underline2(data)
62
+ [
63
+ Escpos.sequence(TXT_UNDERL2_ON),
64
+ data,
65
+ Escpos.sequence(TXT_UNDERL_OFF),
66
+ ].join
67
+ end
68
+ alias :u2 :underline2
69
+
70
+ def bold(data)
71
+ [
72
+ Escpos.sequence(TXT_BOLD_ON),
73
+ data,
74
+ Escpos.sequence(TXT_BOLD_OFF),
75
+ ].join
76
+ end
77
+ alias :b :bold
78
+
79
+ def left(data)
80
+ [
81
+ Escpos.sequence(TXT_ALIGN_LT),
82
+ data,
83
+ Escpos.sequence(TXT_ALIGN_LT),
84
+ ].join
85
+ end
86
+
87
+ def right(data)
88
+ [
89
+ Escpos.sequence(TXT_ALIGN_RT),
90
+ data,
91
+ Escpos.sequence(TXT_ALIGN_LT),
92
+ ].join
93
+ end
94
+
95
+ def center(data)
96
+ [
97
+ Escpos.sequence(TXT_ALIGN_CT),
98
+ data,
99
+ Escpos.sequence(TXT_ALIGN_LT),
100
+ ].join
101
+ end
102
+
103
+ def barcode(data, opts = {})
104
+ text_position = opts.fetch(:text_position, BARCODE_TXT_OFF)
105
+ unless [BARCODE_TXT_OFF, BARCODE_TXT_ABV, BARCODE_TXT_BLW, BARCODE_TXT_BTH].include?(text_position)
106
+ raise ArgumentError("Text position must be one of the following: BARCODE_TXT_OFF, BARCODE_TXT_ABV, BARCODE_TXT_BLW, BARCODE_TXT_BTH.")
107
+ end
108
+ height = opts.fetch(:height, 50)
109
+ raise ArgumentError("Height must be in range from 1 to 255.") if height && (height < 1 || height > 255)
110
+ width = opts.fetch(:width, 3)
111
+ raise ArgumentError("Width must be in range from 2 to 6.") if width && (width < 2 || width > 6)
112
+ [
113
+ Escpos.sequence(text_position),
114
+ Escpos.sequence(BARCODE_WIDTH),
115
+ Escpos.sequence([width]),
116
+ Escpos.sequence(BARCODE_HEIGHT),
117
+ Escpos.sequence([height]),
118
+ Escpos.sequence(opts.fetch(:format, BARCODE_EAN13)),
119
+ data
120
+ ].join
121
+ end
122
+
123
+ def partial_cut
124
+ Escpos.sequence(PAPER_PARTIAL_CUT)
125
+ end
126
+
127
+ def cut
128
+ Escpos.sequence(PAPER_FULL_CUT)
129
+ end
130
+
131
+ end
132
+ end
@@ -0,0 +1,34 @@
1
+ require 'base64'
2
+
3
+ module Escpos
4
+
5
+ class Printer
6
+
7
+ def initialize
8
+ # ensure only supported sequences are generated
9
+ @data = "".force_encoding("ASCII-8BIT")
10
+ @data = Escpos.sequence HW_INIT
11
+ end
12
+
13
+ def write(data)
14
+ @data << data
15
+ end
16
+
17
+ def partial_cut!
18
+ @data << Escpos.sequence(PAPER_PARTIAL_CUT)
19
+ end
20
+
21
+ def cut!
22
+ @data << Escpos.sequence(PAPER_FULL_CUT)
23
+ end
24
+
25
+ def to_escpos
26
+ @data
27
+ end
28
+
29
+ def to_base64
30
+ Base64.strict_encode64 @data
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'erb'
2
+
3
+ module Escpos
4
+ class Report
5
+ include ERB::Util
6
+ include Helpers
7
+
8
+ def initialize(file_or_path, optr = {})
9
+ if file_or_path.is_a?(String)
10
+ @template = ERB.new(File.open(file_or_path).read)
11
+ elsif file_or_path.is_a?(File)
12
+ @template = ERB.new(file_or_path.read)
13
+ else
14
+ raise ArgumentError.new("Must pass instance of file or path as argument.")
15
+ end
16
+ end
17
+
18
+ def render
19
+ @template.result binding
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,3 @@
1
+ module Escpos
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,7 @@
1
+ <%= item "First item" %>
2
+ <%= item "Second item" %>
3
+ <%= item "Third item" %>
4
+
5
+
6
+
7
+
@@ -0,0 +1,29 @@
1
+ Unformatted text
2
+
3
+ <%= encode "ISO-8859-2 encoded text. (ěščřžýáíéúů)", encoding: "ISO-8859-2" %>
4
+
5
+ <%= text "Normal text" %>
6
+
7
+ <%= double_height "Double height text" %>
8
+
9
+ <%= double_width "Double width text" %>
10
+
11
+ <%= quad_text "Quad area text" %>
12
+
13
+ <%= underline "Underlined text" %>
14
+
15
+ <%= underline2 "Underlined text (2)" %>
16
+
17
+ <%= bold "Bold text" %>
18
+
19
+ <%= left "Left aligned text" %>
20
+
21
+ <%= right "Right aligned text" %>
22
+
23
+ <%= center "Centered text" %>
24
+
25
+ <%= barcode "8594404000572" %>
26
+
27
+
28
+
29
+
@@ -0,0 +1,17 @@
1
+ require_relative '../../test_helper'
2
+
3
+ class TestPrinter < Minitest::Test
4
+ def setup
5
+ @printer = Escpos::Printer.new
6
+ end
7
+
8
+ def test_styles
9
+ require 'erb'
10
+ template = ERB.new(File.open(File.join(__dir__, '../../fixtures/styles.erb')).read)
11
+ @printer.write template.result(Class.new { include Escpos::Helpers }.new.instance_eval { binding })
12
+ @printer.cut!
13
+ #pp @printer.to_base64
14
+ assert_equal @printer.to_base64, 'G0BVbmZvcm1hdHRlZCB0ZXh0CgpJU08tODg1OS0yIGVuY29kZWQgdGV4dC4gKOy56Pi+/eHt6fr5KQoKGyEATm9ybWFsIHRleHQbIQAKChshEERvdWJsZSBoZWlnaHQgdGV4dBshAAoKGyEgRG91YmxlIHdpZHRoIHRleHQbIQAKChshMFF1YWQgYXJlYSB0ZXh0GyEACgobLQFVbmRlcmxpbmVkIHRleHQbLQAKChstAlVuZGVybGluZWQgdGV4dCAoMikbLQAKChtFAUJvbGQgdGV4dBtFAAoKG2EATGVmdCBhbGlnbmVkIHRleHQbYQAKChthAlJpZ2h0IGFsaWduZWQgdGV4dBthAAoKG2EBQ2VudGVyZWQgdGV4dBthAAoKHUgAHXcDHWgyHWsCODU5NDQwNDAwMDU3MgoKCgoKHVYA'
15
+ end
16
+
17
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../../test_helper'
2
+
3
+ class TestReport < Minitest::Test
4
+ def setup
5
+ @printer = Escpos::Printer.new
6
+ end
7
+
8
+ def test_styles
9
+ report_klass = Class.new(Escpos::Report)
10
+ report_klass.class_eval do
11
+ def item(text)
12
+ @count ||= 0
13
+ @count += 1
14
+ quad_text "#{@count}. #{text}"
15
+ end
16
+ end
17
+ report = report_klass.new(File.join(__dir__, '../../fixtures/report.erb'))
18
+
19
+ @printer.write report.render
20
+ @printer.cut!
21
+ #pp @printer.to_base64
22
+ assert_equal @printer.to_base64, 'G0AbITAxLiBGaXJzdCBpdGVtGyEAChshMDIuIFNlY29uZCBpdGVtGyEAChshMDMuIFRoaXJkIGl0ZW0bIQAKCgoKCh1WAA=='
23
+ end
24
+
25
+ end
@@ -0,0 +1,7 @@
1
+ #$VERBOSE = true
2
+
3
+ require 'minitest/autorun'
4
+ #require 'minitest/pride'
5
+ require 'pp'
6
+
7
+ require File.expand_path('../../lib/escpos.rb', __FILE__)
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: escpos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Jan Svoboda
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-06-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 5.4.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 5.4.2
55
+ description: A ruby implementation of ESC/POS (thermal) printer command specification.
56
+ email:
57
+ - jan@mluv.cz
58
+ executables:
59
+ - console
60
+ - setup
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".gitignore"
65
+ - Gemfile
66
+ - README.md
67
+ - Rakefile
68
+ - bin/console
69
+ - bin/setup
70
+ - config
71
+ - escpos.gemspec
72
+ - examples/report.erb
73
+ - examples/report.rb
74
+ - lib/escpos.rb
75
+ - lib/escpos/helpers.rb
76
+ - lib/escpos/printer.rb
77
+ - lib/escpos/report.rb
78
+ - lib/escpos/version.rb
79
+ - test/fixtures/report.erb
80
+ - test/fixtures/styles.erb
81
+ - test/lib/escpos/printer_test.rb
82
+ - test/lib/escpos/report_test.rb
83
+ - test/test_helper.rb
84
+ homepage: https://github.com/escpos/escpos
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '1.9'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.5.1
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: A ruby implementation of ESC/POS (thermal) printer command specification.
108
+ test_files:
109
+ - test/fixtures/report.erb
110
+ - test/fixtures/styles.erb
111
+ - test/lib/escpos/printer_test.rb
112
+ - test/lib/escpos/report_test.rb
113
+ - test/test_helper.rb
114
+ has_rdoc: