Class: WifiWand::Models::Helpers::QrCodeGenerator
- Inherits:
-
Object
- Object
- WifiWand::Models::Helpers::QrCodeGenerator
- Includes:
- StringPredicates
- Defined in:
- lib/wifi_wand/models/helpers/qr_code_generator.rb
Constant Summary collapse
- QR_FIELD_ESCAPES =
{ ';' => '\\;', ',' => '\\,', ':' => '\\:', '\\' => '\\\\', }.freeze
- RENDER_FORMATS =
{ ansi: 'ANSI', png: 'PNG', svg: 'SVG', eps: 'EPS', }.freeze
- BINARY_RENDER_FORMATS =
[:png].freeze
- FILE_OUTPUT_FORMATS =
{ '.png' => :png, '.svg' => :svg, '.eps' => :eps, }.freeze
Instance Method Summary collapse
- #generate(model, filespec = nil, overwrite: false, password: nil, in_stream: $stdin) ⇒ Object
- #render(model, format: :ansi, password: nil) ⇒ Object
Methods included from StringPredicates
string_nil_or_blank?, string_nil_or_empty?
Instance Method Details
#generate(model, filespec = nil, overwrite: false, password: nil, in_stream: $stdin) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/wifi_wand/models/helpers/qr_code_generator.rb', line 59 def generate(model, filespec = nil, overwrite: false, password: nil, in_stream: $stdin) # Normalize filespec for robust API. spec = filespec&.to_s if spec == '-' raise WifiWand::Error, 'Use print_qr_code to print an ANSI QR code or render_qr_code(format: :ansi) to return one.' end filename = nil format = nil if spec && !spec.empty? filename = spec format = qr_output_format_for(filename) validate_qr_output_directory_ready!(filename) end ensure_qrencode_available(model) network_name, security, resolved_password, is_hidden = qr_context(model, password) qr_string = build_wifi_qr_string(network_name, resolved_password, security, is_hidden: is_hidden) filename ||= build_filename(network_name) format ||= qr_output_format_for(filename) validate_qr_output_directory_ready!(filename) unless spec && !spec.empty? confirm_overwrite(filename, overwrite: overwrite, output_stream: model.out_stream, input_stream: in_stream) rendered_output = render_qr_data(model, qr_string, format: format) write_qr_file(model, filename, rendered_output) filename end |
#render(model, format: :ansi, password: nil) ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/wifi_wand/models/helpers/qr_code_generator.rb', line 90 def render(model, format: :ansi, password: nil) qrencode_type = qrencode_type_for(format) ensure_qrencode_available(model) network_name, security, resolved_password, is_hidden = qr_context(model, password) qr_string = build_wifi_qr_string(network_name, resolved_password, security, is_hidden: is_hidden) render_qr_data(model, qr_string, format: format, qrencode_type: qrencode_type) end |