applin-rails 0.5.0 → 0.7.0
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/applin/rails/version.rb +1 -1
- data/lib/applin/rails.rb +0 -1
- data/lib/applin.rb +89 -83
- data/sig/applin.rbs +18 -8
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9549a088e20dc0e39d0152d3a13be7c4f1bcb2202ce9fd3b78c87793ddba0dff
         | 
| 4 | 
            +
              data.tar.gz: d6c833d8898a537d2542c861273aac8a4908d7d7cbe0b39a59ad22b2b607b106
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 84fe8b3b2b3da47a61027ea8e7187e366e2ae82a22e9c6449780beb1113aff83abb5399208749827801ce35fd95a2ee06138cde56bac84c90e44e8ebbb4713be
         | 
| 7 | 
            +
              data.tar.gz: 2a75e3c118c8811a43e14033fb29949d2947cc4994b45c4c14e23dc26b53bc982e2edade9d4ff8743f4368cf125b33aa5b92c760e47ee052736ef64ac9a81e5d
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            ## applin Ruby Gem Changes
         | 
| 2 | 
            +
            - v0.7.0
         | 
| 3 | 
            +
                - Support ApplinIos 0.32.0.
         | 
| 4 | 
            +
                - Remove on_user_error_poll action and make it a parameter of the rpc action.
         | 
| 5 | 
            +
                - Add `modal` action.
         | 
| 6 | 
            +
                - Add `aspect_ratio` param to `choose_photo` and `take_photo` actions.
         | 
| 7 | 
            +
            - v0.6.0
         | 
| 8 | 
            +
                - Support ApplinIos v0.25.0.
         | 
| 9 | 
            +
                - Add `poll_delay_ms` to checkbox and textfield.
         | 
| 10 | 
            +
                - Remove checkbox `rpc` field.
         | 
    
        data/lib/applin/rails/version.rb
    CHANGED
    
    
    
        data/lib/applin/rails.rb
    CHANGED
    
    
    
        data/lib/applin.rb
    CHANGED
    
    | @@ -20,6 +20,90 @@ module Applin | |
| 20 20 |  | 
| 21 21 | 
             
              module_function
         | 
| 22 22 |  | 
| 23 | 
            +
              # Actions ###################################################################
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def choose_photo(upload_url:, aspect_ratio: nil)
         | 
| 26 | 
            +
                { typ: "choose_photo", url: upload_url, aspect_ratio: aspect_ratio }
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def copy_to_clipboard(text)
         | 
| 30 | 
            +
                { typ: "copy_to_clipboard", string_value: text }
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def launch_url(url)
         | 
| 34 | 
            +
                { typ: "launch_url", url: url }
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              def logout
         | 
| 38 | 
            +
                { typ: "logout" }
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def modal_button(text:, actions:)
         | 
| 42 | 
            +
                { text: text, actions: actions }
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              def modal(title:, buttons:, message: nil)
         | 
| 46 | 
            +
                { typ: "modal", title: title, message: message, buttons: buttons }
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              def poll
         | 
| 50 | 
            +
                { typ: "poll" }
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              def pop
         | 
| 54 | 
            +
                { typ: "pop" }
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              def push(page_key)
         | 
| 58 | 
            +
                { typ: "push", page: page_key }
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def replace_all(page_key)
         | 
| 62 | 
            +
                { typ: "replace_all", page: page_key }
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              def rpc(url:, on_user_error_poll: nil)
         | 
| 66 | 
            +
                { typ: "rpc", url: url, on_user_error_poll: on_user_error_poll }
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              def take_photo(upload_url:, aspect_ratio: nil)
         | 
| 70 | 
            +
                { typ: "take_photo", url: upload_url, aspect_ratio: aspect_ratio }
         | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              # Pages #####################################################################
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              def nav_page(
         | 
| 76 | 
            +
                title:,
         | 
| 77 | 
            +
                start: nil,
         | 
| 78 | 
            +
                end_: nil,
         | 
| 79 | 
            +
                ephemeral: nil,
         | 
| 80 | 
            +
                stream: nil,
         | 
| 81 | 
            +
                poll_seconds: nil,
         | 
| 82 | 
            +
                &widget_block
         | 
| 83 | 
            +
              )
         | 
| 84 | 
            +
                {
         | 
| 85 | 
            +
                  typ: :nav_page,
         | 
| 86 | 
            +
                  start: start,
         | 
| 87 | 
            +
                  end: end_,
         | 
| 88 | 
            +
                  ephemeral: ephemeral,
         | 
| 89 | 
            +
                  title: title,
         | 
| 90 | 
            +
                  stream: stream,
         | 
| 91 | 
            +
                  poll_seconds: poll_seconds,
         | 
| 92 | 
            +
                  widget: widget_block.yield,
         | 
| 93 | 
            +
                }.compact
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              def plain_page(title: nil, ephemeral: nil, stream: nil, poll_seconds: nil, &widget_block)
         | 
| 97 | 
            +
                {
         | 
| 98 | 
            +
                  typ: :plain_page,
         | 
| 99 | 
            +
                  title: title,
         | 
| 100 | 
            +
                  ephemeral: ephemeral,
         | 
| 101 | 
            +
                  stream: stream,
         | 
| 102 | 
            +
                  poll_seconds: poll_seconds,
         | 
| 103 | 
            +
                  widget: widget_block.yield,
         | 
| 104 | 
            +
                }.compact
         | 
| 105 | 
            +
              end
         | 
| 106 | 
            +
             | 
| 23 107 | 
             
              # Widgets ###################################################################
         | 
| 24 108 |  | 
| 25 109 | 
             
              def back_button(actions:)
         | 
| @@ -30,12 +114,12 @@ module Applin | |
| 30 114 | 
             
                { typ: :button, text: text, actions: actions }
         | 
| 31 115 | 
             
              end
         | 
| 32 116 |  | 
| 33 | 
            -
              def checkbox(text:, var_name:, actions: nil, initial_bool: nil,  | 
| 117 | 
            +
              def checkbox(text:, var_name:, actions: nil, initial_bool: nil, poll_delay_ms: nil)
         | 
| 34 118 | 
             
                {
         | 
| 35 119 | 
             
                  typ: :checkbox,
         | 
| 36 120 | 
             
                  actions: actions,
         | 
| 37 121 | 
             
                  initial_bool: initial_bool,
         | 
| 38 | 
            -
                   | 
| 122 | 
            +
                  poll_delay_ms: poll_delay_ms,
         | 
| 39 123 | 
             
                  text: text,
         | 
| 40 124 | 
             
                  var_name: var_name,
         | 
| 41 125 | 
             
                }.compact
         | 
| @@ -118,7 +202,8 @@ module Applin | |
| 118 202 | 
             
                label: nil,
         | 
| 119 203 | 
             
                max_chars: nil,
         | 
| 120 204 | 
             
                max_lines: nil,
         | 
| 121 | 
            -
                min_chars: nil
         | 
| 205 | 
            +
                min_chars: nil,
         | 
| 206 | 
            +
                poll_delay_ms: nil
         | 
| 122 207 | 
             
              )
         | 
| 123 208 | 
             
                {
         | 
| 124 209 | 
             
                  typ: :textfield,
         | 
| @@ -130,89 +215,10 @@ module Applin | |
| 130 215 | 
             
                  max_chars: max_chars,
         | 
| 131 216 | 
             
                  max_lines: max_lines,
         | 
| 132 217 | 
             
                  min_chars: min_chars,
         | 
| 218 | 
            +
                  poll_delay_ms: poll_delay_ms,
         | 
| 133 219 | 
             
                  var_name: var_name,
         | 
| 134 220 | 
             
                }.compact
         | 
| 135 221 | 
             
              end
         | 
| 136 222 |  | 
| 137 | 
            -
              # Pages #####################################################################
         | 
| 138 | 
            -
             | 
| 139 | 
            -
              def nav_page(
         | 
| 140 | 
            -
                title:,
         | 
| 141 | 
            -
                start: nil,
         | 
| 142 | 
            -
                end_: nil,
         | 
| 143 | 
            -
                ephemeral: nil,
         | 
| 144 | 
            -
                stream: nil,
         | 
| 145 | 
            -
                poll_seconds: nil,
         | 
| 146 | 
            -
                &widget_block
         | 
| 147 | 
            -
              )
         | 
| 148 | 
            -
                {
         | 
| 149 | 
            -
                  typ: :nav_page,
         | 
| 150 | 
            -
                  start: start,
         | 
| 151 | 
            -
                  end: end_,
         | 
| 152 | 
            -
                  ephemeral: ephemeral,
         | 
| 153 | 
            -
                  title: title,
         | 
| 154 | 
            -
                  stream: stream,
         | 
| 155 | 
            -
                  poll_seconds: poll_seconds,
         | 
| 156 | 
            -
                  widget: widget_block.yield,
         | 
| 157 | 
            -
                }.compact
         | 
| 158 | 
            -
              end
         | 
| 159 | 
            -
             | 
| 160 | 
            -
              def plain_page(title: nil, ephemeral: nil, stream: nil, poll_seconds: nil, &widget_block)
         | 
| 161 | 
            -
                {
         | 
| 162 | 
            -
                  typ: :plain_page,
         | 
| 163 | 
            -
                  title: title,
         | 
| 164 | 
            -
                  ephemeral: ephemeral,
         | 
| 165 | 
            -
                  stream: stream,
         | 
| 166 | 
            -
                  poll_seconds: poll_seconds,
         | 
| 167 | 
            -
                  widget: widget_block.yield,
         | 
| 168 | 
            -
                }.compact
         | 
| 169 | 
            -
              end
         | 
| 170 | 
            -
             | 
| 171 | 
            -
              # Actions ###################################################################
         | 
| 172 | 
            -
             | 
| 173 | 
            -
              def choose_photo(upload_url:)
         | 
| 174 | 
            -
                "choose_photo:#{upload_url}"
         | 
| 175 | 
            -
              end
         | 
| 176 | 
            -
             | 
| 177 | 
            -
              def copy_to_clipboard(text)
         | 
| 178 | 
            -
                "copy_to_clipboard:#{text}"
         | 
| 179 | 
            -
              end
         | 
| 180 | 
            -
             | 
| 181 | 
            -
              def launch_url(url)
         | 
| 182 | 
            -
                "launch_url:#{url}"
         | 
| 183 | 
            -
              end
         | 
| 184 | 
            -
             | 
| 185 | 
            -
              def logout
         | 
| 186 | 
            -
                "logout"
         | 
| 187 | 
            -
              end
         | 
| 188 | 
            -
             | 
| 189 | 
            -
              def nothing
         | 
| 190 | 
            -
                "nothing"
         | 
| 191 | 
            -
              end
         | 
| 192 | 
            -
             | 
| 193 | 
            -
              def poll
         | 
| 194 | 
            -
                "poll"
         | 
| 195 | 
            -
              end
         | 
| 196 | 
            -
             | 
| 197 | 
            -
              def pop
         | 
| 198 | 
            -
                "pop"
         | 
| 199 | 
            -
              end
         | 
| 200 | 
            -
             | 
| 201 | 
            -
              def push(page_key)
         | 
| 202 | 
            -
                "push:#{page_key}"
         | 
| 203 | 
            -
              end
         | 
| 204 | 
            -
             | 
| 205 | 
            -
              def replace_all(page_key)
         | 
| 206 | 
            -
                "replace_all:#{page_key}"
         | 
| 207 | 
            -
              end
         | 
| 208 | 
            -
             | 
| 209 | 
            -
              def rpc(url)
         | 
| 210 | 
            -
                "rpc:#{url}"
         | 
| 211 | 
            -
              end
         | 
| 212 | 
            -
             | 
| 213 | 
            -
              def take_photo(upload_url:)
         | 
| 214 | 
            -
                "take_photo:#{upload_url}"
         | 
| 215 | 
            -
              end
         | 
| 216 | 
            -
             | 
| 217 223 | 
             
              # rubocop:enable Metrics/MethodLength, Metrics/ParameterLists
         | 
| 218 224 | 
             
            end
         | 
    
        data/sig/applin.rbs
    CHANGED
    
    | @@ -27,7 +27,8 @@ module Applin | |
| 27 27 | 
             
              DISPOSITION_STRETCH: disposition
         | 
| 28 28 | 
             
              VERSION: String
         | 
| 29 29 |  | 
| 30 | 
            -
              type action = String
         | 
| 30 | 
            +
              type action = { typ: String }
         | 
| 31 | 
            +
              type modal_button = { text: String, actions: Array[action] }
         | 
| 31 32 | 
             
              type page = { title: String }
         | 
| 32 33 | 
             
              type widget = { typ: String }
         | 
| 33 34 |  | 
| @@ -35,9 +36,15 @@ module Applin | |
| 35 36 |  | 
| 36 37 | 
             
              def button: (text: String, actions: Array[action]) -> widget
         | 
| 37 38 |  | 
| 38 | 
            -
              def checkbox: ( | 
| 39 | 
            +
              def checkbox: (
         | 
| 40 | 
            +
                  text: String,
         | 
| 41 | 
            +
                  var_name: String,
         | 
| 42 | 
            +
                  actions: Array[action]?,
         | 
| 43 | 
            +
                  initial_bool: bool?,
         | 
| 44 | 
            +
                  poll_delay_ms: Numeric?,
         | 
| 45 | 
            +
                ) -> widget
         | 
| 39 46 |  | 
| 40 | 
            -
              def choose_photo: (upload_url: String) -> action
         | 
| 47 | 
            +
              def choose_photo: (upload_url: String, aspect_ratio: Numeric?) -> action
         | 
| 41 48 |  | 
| 42 49 | 
             
              def column: (widgets: Array[widget], align: alignment?, spacing: Numeric?) -> widget
         | 
| 43 50 |  | 
| @@ -63,6 +70,10 @@ module Applin | |
| 63 70 |  | 
| 64 71 | 
             
              def logout: -> action
         | 
| 65 72 |  | 
| 73 | 
            +
              def modal_button: (text: String, actions: Array[action]) -> modal_button
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              def modal: (title: String, message: String?, buttons: Array[modal_button]) -> action
         | 
| 76 | 
            +
             | 
| 66 77 | 
             
              def nav_button: (text: String, actions: Array[action], badge_text: String?, photo_url: String?, sub_text: String?) -> widget
         | 
| 67 78 |  | 
| 68 79 | 
             
              def nav_page: (
         | 
| @@ -74,8 +85,6 @@ module Applin | |
| 74 85 | 
             
                  poll_seconds: Numeric?,
         | 
| 75 86 | 
             
                ) { () -> widget } -> page
         | 
| 76 87 |  | 
| 77 | 
            -
              def nothing: -> action
         | 
| 78 | 
            -
             | 
| 79 88 | 
             
              def plain_page: (
         | 
| 80 89 | 
             
                  title: String?,
         | 
| 81 90 | 
             
                  ephemeral: bool?,
         | 
| @@ -91,13 +100,13 @@ module Applin | |
| 91 100 |  | 
| 92 101 | 
             
              def replace_all: (String) -> action
         | 
| 93 102 |  | 
| 94 | 
            -
              def rpc: (String) -> action
         | 
| 103 | 
            +
              def rpc: (url: String, on_user_error_poll: bool?) -> action
         | 
| 95 104 |  | 
| 96 105 | 
             
              def scroll: () { () -> widget } -> widget
         | 
| 97 106 |  | 
| 98 107 | 
             
              def table: (rows: Array[Array[widget]], spacing: Numeric?) -> widget
         | 
| 99 108 |  | 
| 100 | 
            -
              def take_photo: (upload_url: String) -> action
         | 
| 109 | 
            +
              def take_photo: (upload_url: String, aspect_ratio: Numeric?) -> action
         | 
| 101 110 |  | 
| 102 111 | 
             
              def text: (String) -> widget
         | 
| 103 112 |  | 
| @@ -110,6 +119,7 @@ module Applin | |
| 110 119 | 
             
                  label: String?,
         | 
| 111 120 | 
             
                  max_chars: Numeric?,
         | 
| 112 121 | 
             
                  max_lines: Numeric?,
         | 
| 113 | 
            -
                  min_chars: Numeric | 
| 122 | 
            +
                  min_chars: Numeric?,
         | 
| 123 | 
            +
                  poll_delay_ms: Numeric?
         | 
| 114 124 | 
             
                ) -> widget
         | 
| 115 125 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: applin-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.7.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Leonhard
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-01-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: Create mobile apps using only backend code.  Applin™ is a Server-Driven
         | 
| 14 14 | 
             
              UI (SDUI) system.
         |