File: messages.rb

package info (click to toggle)
ruby-clamp 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 364 kB
  • sloc: ruby: 2,851; makefile: 4
file content (58 lines) | stat: -rw-r--r-- 1,405 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# frozen_string_literal: true

module Clamp # :nodoc:

  # Message lookup, to allow localization.
  #
  module Messages

    def messages=(new_messages)
      messages.merge!(new_messages)
    end

    def message(key, options = {})
      string = messages.fetch(key)
      return string if options.empty?

      format string, options
    end

    def clear_messages!
      init_default_messages
    end

    DEFAULTS = {
      too_many_arguments: "too many arguments",
      option_required: "option '%<option>s' is required",
      option_or_env_required: "option '%<option>s' (or env %<env>s) is required",
      option_argument_error: "option '%<switch>s': %<message>s",
      parameter_argument_error: "parameter '%<param>s': %<message>s",
      env_argument_error: "$%<env>s: %<message>s",
      unrecognised_option: "Unrecognised option '%<switch>s'",
      no_such_subcommand: "No such sub-command '%<name>s'",
      no_value_provided: "no value provided",
      default: "default",
      or: "or",
      required: "required",
      usage_heading: "Usage",
      parameters_heading: "Parameters",
      subcommands_heading: "Subcommands",
      options_heading: "Options"
    }.freeze

    private

    def messages
      init_default_messages unless defined?(@messages)
      @messages
    end

    def init_default_messages
      @messages = DEFAULTS.dup
    end

  end

  extend Messages

end