lunchmoney 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +7 -0
- data/.github/workflows/check_pipeline.yml +2 -2
- data/.github/workflows/ci.yml +10 -2
- data/.github/workflows/release_pipeline.yml +1 -1
- data/.mdlrc +4 -0
- data/.rubocop.yml +1 -0
- data/.simplecov +30 -0
- data/.toys/.toys.rb +1 -0
- data/.toys/coverage.rb +5 -0
- data/.toys/mdl.rb +5 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +29 -1
- data/LICENSE +1 -1
- data/README.md +5 -3
- data/lib/lunchmoney/objects/object.rb +3 -1
- data/lib/lunchmoney/version.rb +1 -1
- data/sorbet/rbi/gems/chef-utils@18.4.2.rbi +8 -0
- data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
- data/sorbet/rbi/gems/kramdown-parser-gfm@1.1.0.rbi +127 -0
- data/sorbet/rbi/gems/kramdown@2.4.0.rbi +3271 -0
- data/sorbet/rbi/gems/mdl@0.13.0.rbi +444 -0
- data/sorbet/rbi/gems/mixlib-cli@2.1.8.rbi +313 -0
- data/sorbet/rbi/gems/mixlib-config@3.0.27.rbi +580 -0
- data/sorbet/rbi/gems/mixlib-shellout@3.2.7.rbi +628 -0
- data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +216 -0
- data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2148 -0
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +238 -0
- data/sorbet/rbi/gems/tomlrb@2.0.3.rbi +8 -0
- metadata +19 -4
- data/.DS_Store +0 -0
- data/.github/workflows/publish_gem.yml +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86b24d3bbcd5e93161548921e2c39deac79d1b4970352a702c8386cf4e7f6f7b
|
4
|
+
data.tar.gz: 3c9277f552499d51bee728241fca6ad0c2aeba7224d4819d2dc1df8456ab8adb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5791261da74adce58b20ea6d554777ea05ce3f9c170677284e5226575f5a90a5900ed2b29d0f9367cb718da12ce979020b676aa372441a0b0380771577960703
|
7
|
+
data.tar.gz: 46bab5cdf01ef0aae51ee89650257c237467a95ddde546c7772c907aa43ca43ad09743c466f363cd0c984109f23993b84900d708aab8e9b5485c1e22e67011d1
|
data/.codeclimate.yml
ADDED
@@ -13,12 +13,12 @@ on:
|
|
13
13
|
jobs:
|
14
14
|
update-rbis:
|
15
15
|
name: RBI Updater
|
16
|
-
uses:
|
16
|
+
uses: ./.github/workflows/dependabot-rbi-updater.yml
|
17
17
|
secrets: inherit
|
18
18
|
|
19
19
|
ci:
|
20
20
|
needs: update-rbis
|
21
21
|
if: always() && contains(needs.*.result, 'skipped')
|
22
22
|
name: "CI"
|
23
|
-
uses:
|
23
|
+
uses: ./.github/workflows/ci.yml
|
24
24
|
secrets: inherit
|
data/.github/workflows/ci.yml
CHANGED
@@ -41,15 +41,23 @@ jobs:
|
|
41
41
|
-
|
42
42
|
name: Check for DSL rbi updates
|
43
43
|
run: bin/tapioca dsl --verify
|
44
|
+
-
|
45
|
+
name: Markdown Lint
|
46
|
+
run: bin/toys mdl
|
44
47
|
-
|
45
48
|
name: Run Tests (Using Cassettes)
|
46
49
|
if: ${{ ! endsWith(matrix.ruby-version, '3.3') }}
|
47
50
|
run: bin/toys test
|
48
51
|
-
|
49
|
-
name: Run Tests (With Remote Calls)
|
52
|
+
name: Run Tests (With Remote Calls & Coverage Report)
|
50
53
|
if: ${{ endsWith(matrix.ruby-version, '3.3') }}
|
51
|
-
|
54
|
+
uses: paambaati/codeclimate-action@v5.0.0
|
52
55
|
env:
|
56
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
53
57
|
REMOTE_TESTS_ENABLED: ${{ vars.REMOTE_TESTS_ENABLED }}
|
54
58
|
LUNCHMONEY_TOKEN: ${{ secrets.LUNCHMONEY_TOKEN }}
|
59
|
+
with:
|
60
|
+
coverageCommand: bin/toys test
|
61
|
+
coverageLocations: |
|
62
|
+
${{ github.workspace }}/coverage/coverage.json:simplecov
|
55
63
|
|
data/.mdlrc
ADDED
data/.rubocop.yml
CHANGED
data/.simplecov
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "simplecov_json_formatter"
|
4
|
+
|
5
|
+
SimpleCov.formatter = if ENV.fetch("CI", false)
|
6
|
+
SimpleCov::Formatter::JSONFormatter
|
7
|
+
else
|
8
|
+
SimpleCov::Formatter::HTMLFormatter
|
9
|
+
end
|
10
|
+
|
11
|
+
SimpleCov.minimum_coverage(95)
|
12
|
+
SimpleCov.maximum_coverage_drop(1)
|
13
|
+
SimpleCov.start do
|
14
|
+
enable_coverage :branch
|
15
|
+
primary_coverage :branch
|
16
|
+
|
17
|
+
add_filter "/test/"
|
18
|
+
|
19
|
+
add_group "Calls", "lib/lunchmoney/calls"
|
20
|
+
add_group "Objects", "lib/lunchmoney/objects"
|
21
|
+
add_group "Core Files", [
|
22
|
+
"lib/lunchmoney.rb",
|
23
|
+
"lib/lunchmoney/api.rb",
|
24
|
+
"lib/lunchmoney/configuration.rb",
|
25
|
+
"lib/lunchmoney/errors.rb",
|
26
|
+
"lib/lunchmoney/exceptions.rb",
|
27
|
+
"lib/lunchmoney/validators.rb",
|
28
|
+
"lib/lunchmoney/version.rb",
|
29
|
+
]
|
30
|
+
end
|
data/.toys/.toys.rb
CHANGED
data/.toys/coverage.rb
ADDED
data/.toys/mdl.rb
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lunchmoney (1.1.
|
4
|
+
lunchmoney (1.1.2)
|
5
5
|
activesupport (>= 6.1)
|
6
6
|
faraday (>= 1.0.0)
|
7
7
|
sorbet-runtime (>= 0.5)
|
@@ -28,12 +28,15 @@ GEM
|
|
28
28
|
ast (2.4.2)
|
29
29
|
base64 (0.2.0)
|
30
30
|
bigdecimal (3.1.6)
|
31
|
+
chef-utils (18.4.2)
|
32
|
+
concurrent-ruby
|
31
33
|
coderay (1.1.3)
|
32
34
|
concurrent-ruby (1.2.3)
|
33
35
|
connection_pool (2.4.1)
|
34
36
|
crack (1.0.0)
|
35
37
|
bigdecimal
|
36
38
|
rexml
|
39
|
+
docile (1.4.0)
|
37
40
|
dotenv (2.8.1)
|
38
41
|
drb (2.2.0)
|
39
42
|
ruby2_keywords
|
@@ -46,9 +49,24 @@ GEM
|
|
46
49
|
i18n (1.14.1)
|
47
50
|
concurrent-ruby (~> 1.0)
|
48
51
|
json (2.7.1)
|
52
|
+
kramdown (2.4.0)
|
53
|
+
rexml
|
54
|
+
kramdown-parser-gfm (1.1.0)
|
55
|
+
kramdown (~> 2.0)
|
49
56
|
language_server-protocol (3.17.0.3)
|
57
|
+
mdl (0.13.0)
|
58
|
+
kramdown (~> 2.3)
|
59
|
+
kramdown-parser-gfm (~> 1.1)
|
60
|
+
mixlib-cli (~> 2.1, >= 2.1.1)
|
61
|
+
mixlib-config (>= 2.2.1, < 4)
|
62
|
+
mixlib-shellout
|
50
63
|
method_source (1.0.0)
|
51
64
|
minitest (5.22.2)
|
65
|
+
mixlib-cli (2.1.8)
|
66
|
+
mixlib-config (3.0.27)
|
67
|
+
tomlrb
|
68
|
+
mixlib-shellout (3.2.7)
|
69
|
+
chef-utils
|
52
70
|
mocha (2.1.0)
|
53
71
|
ruby2_keywords (>= 0.0.5)
|
54
72
|
mutex_m (0.2.0)
|
@@ -103,6 +121,12 @@ GEM
|
|
103
121
|
rubocop (>= 0.90.0)
|
104
122
|
ruby-progressbar (1.13.0)
|
105
123
|
ruby2_keywords (0.0.5)
|
124
|
+
simplecov (0.22.0)
|
125
|
+
docile (~> 1.1)
|
126
|
+
simplecov-html (~> 0.11)
|
127
|
+
simplecov_json_formatter (~> 0.1)
|
128
|
+
simplecov-html (0.12.3)
|
129
|
+
simplecov_json_formatter (0.1.4)
|
106
130
|
sorbet (0.5.11247)
|
107
131
|
sorbet-static (= 0.5.11247)
|
108
132
|
sorbet-runtime (0.5.11247)
|
@@ -128,6 +152,7 @@ GEM
|
|
128
152
|
thor (>= 1.2.0)
|
129
153
|
yard-sorbet
|
130
154
|
thor (1.3.0)
|
155
|
+
tomlrb (2.0.3)
|
131
156
|
toys (0.15.5)
|
132
157
|
toys-core (= 0.15.5)
|
133
158
|
toys-core (0.15.5)
|
@@ -155,6 +180,7 @@ DEPENDENCIES
|
|
155
180
|
appraisal
|
156
181
|
dotenv
|
157
182
|
lunchmoney!
|
183
|
+
mdl
|
158
184
|
minitest (~> 5.22)
|
159
185
|
mocha (~> 2.1.0)
|
160
186
|
pry-sorbet (~> 0.2)
|
@@ -162,6 +188,8 @@ DEPENDENCIES
|
|
162
188
|
rubocop-rails
|
163
189
|
rubocop-shopify
|
164
190
|
rubocop-sorbet
|
191
|
+
simplecov
|
192
|
+
simplecov_json_formatter
|
165
193
|
sorbet-static-and-runtime
|
166
194
|
spoom
|
167
195
|
tapioca
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
# lunchmoney
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/lunchmoney.svg)](https://badge.fury.io/rb/lunchmoney)
|
4
|
-
[![CI](https://github.com/
|
5
|
-
[![Yard Docs](https://github.com/
|
4
|
+
[![CI](https://github.com/mmenanno/lunchmoney/actions/workflows/ci.yml/badge.svg)](https://github.com/mmenanno/lunchmoney/actions/workflows/ci.yml)
|
5
|
+
[![Yard Docs](https://github.com/mmenanno/lunchmoney/actions/workflows/build_and_publish_yard_docs.yml/badge.svg)](https://github.com/mmenanno/lunchmoney/actions/workflows/build_and_publish_yard_docs.yml)
|
6
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/6e84458e8cf831e6a6fa/maintainability)](https://codeclimate.com/github/mmenanno/lunchmoney/maintainability)
|
7
|
+
[![Test Coverage](https://api.codeclimate.com/v1/badges/6e84458e8cf831e6a6fa/test_coverage)](https://codeclimate.com/github/mmenanno/lunchmoney/test_coverage)
|
6
8
|
|
7
9
|
This gem is a API client library of the [LunchMoney API](https://lunchmoney.dev/) for the wonderful [LunchMoney](http://lunchmoney.app/) web app for personal finance & budgeting.
|
8
10
|
|
9
|
-
Documentation is still a work in process, but you can find the yard docs for this gem [here](https://
|
11
|
+
Documentation is still a work in process, but you can find the yard docs for this gem [here](https://mmenanno.github.io/lunchmoney/) as well as some write ups of the basics below. An example of every call is listed on the [Api class in the yard docs](https://mmenanno.github.io/lunchmoney/LunchMoney/Api.html).
|
10
12
|
|
11
13
|
## Usage
|
12
14
|
|
@@ -6,7 +6,7 @@ module LunchMoney
|
|
6
6
|
module Objects
|
7
7
|
# Base data object for the objects returned and used when calling the LunchMoney API
|
8
8
|
class Object
|
9
|
-
sig { params(symbolize_keys: T::Boolean).returns(T::Hash[String, T.untyped]) }
|
9
|
+
sig { params(symbolize_keys: T::Boolean).returns(T::Hash[T.any(String, Symbol), T.untyped]) }
|
10
10
|
def serialize(symbolize_keys: false)
|
11
11
|
ivars = instance_variables
|
12
12
|
|
@@ -23,6 +23,8 @@ module LunchMoney
|
|
23
23
|
|
24
24
|
output
|
25
25
|
end
|
26
|
+
|
27
|
+
delegate :to_h, to: :serialize
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
data/lib/lunchmoney/version.rb
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `chef-utils` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem chef-utils`.
|
6
|
+
|
7
|
+
# THIS IS AN EMPTY RBI FILE.
|
8
|
+
# see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem
|
@@ -0,0 +1,376 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `docile` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem docile`.
|
6
|
+
|
7
|
+
# Docile keeps your Ruby DSLs tame and well-behaved.
|
8
|
+
#
|
9
|
+
# source://docile//lib/docile/version.rb#3
|
10
|
+
module Docile
|
11
|
+
extend ::Docile::Execution
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Execute a block in the context of an object whose methods represent the
|
16
|
+
# commands in a DSL.
|
17
|
+
#
|
18
|
+
# Use this method to execute an *imperative* DSL, which means that:
|
19
|
+
#
|
20
|
+
# 1. Each command mutates the state of the DSL context object
|
21
|
+
# 2. The return value of each command is ignored
|
22
|
+
# 3. The final return value is the original context object
|
23
|
+
#
|
24
|
+
# @example Use a String as a DSL
|
25
|
+
# Docile.dsl_eval("Hello, world!") do
|
26
|
+
# reverse!
|
27
|
+
# upcase!
|
28
|
+
# end
|
29
|
+
# #=> "!DLROW ,OLLEH"
|
30
|
+
# @example Use an Array as a DSL
|
31
|
+
# Docile.dsl_eval([]) do
|
32
|
+
# push 1
|
33
|
+
# push 2
|
34
|
+
# pop
|
35
|
+
# push 3
|
36
|
+
# end
|
37
|
+
# #=> [1, 3]
|
38
|
+
# @note Use with an *imperative* DSL (commands modify the context object)
|
39
|
+
# @param dsl [Object] context object whose methods make up the DSL
|
40
|
+
# @param args [Array] arguments to be passed to the block
|
41
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
42
|
+
# `dsl` context object
|
43
|
+
# @return [Object] the `dsl` context object after executing the block
|
44
|
+
#
|
45
|
+
# source://docile//lib/docile.rb#45
|
46
|
+
def dsl_eval(dsl, *args, **_arg2, &block); end
|
47
|
+
|
48
|
+
# Execute a block in the context of an immutable object whose methods,
|
49
|
+
# and the methods of their return values, represent the commands in a DSL.
|
50
|
+
#
|
51
|
+
# Use this method to execute a *functional* DSL, which means that:
|
52
|
+
#
|
53
|
+
# 1. The original DSL context object is never mutated
|
54
|
+
# 2. Each command returns the next DSL context object
|
55
|
+
# 3. The final return value is the value returned by the last command
|
56
|
+
#
|
57
|
+
# @example Use a frozen String as a DSL
|
58
|
+
# Docile.dsl_eval_immutable("I'm immutable!".freeze) do
|
59
|
+
# reverse
|
60
|
+
# upcase
|
61
|
+
# end
|
62
|
+
# #=> "!ELBATUMMI M'I"
|
63
|
+
# @example Use a Float as a DSL
|
64
|
+
# Docile.dsl_eval_immutable(84.5) do
|
65
|
+
# fdiv(2)
|
66
|
+
# floor
|
67
|
+
# end
|
68
|
+
# #=> 42
|
69
|
+
# @note Use with a *functional* DSL (commands return successor
|
70
|
+
# context objects)
|
71
|
+
# @param dsl [Object] immutable context object whose methods make up the
|
72
|
+
# initial DSL
|
73
|
+
# @param args [Array] arguments to be passed to the block
|
74
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
75
|
+
# `dsl` context object and successor return values
|
76
|
+
# @return [Object] the return value of the final command in the block
|
77
|
+
#
|
78
|
+
# source://docile//lib/docile.rb#128
|
79
|
+
def dsl_eval_immutable(dsl, *args, **_arg2, &block); end
|
80
|
+
|
81
|
+
# Execute a block in the context of an object whose methods represent the
|
82
|
+
# commands in a DSL, and return *the block's return value*.
|
83
|
+
#
|
84
|
+
# Use this method to execute an *imperative* DSL, which means that:
|
85
|
+
#
|
86
|
+
# 1. Each command mutates the state of the DSL context object
|
87
|
+
# 2. The return value of each command is ignored
|
88
|
+
# 3. The final return value is the original context object
|
89
|
+
#
|
90
|
+
# @example Use a String as a DSL
|
91
|
+
# Docile.dsl_eval_with_block_return("Hello, world!") do
|
92
|
+
# reverse!
|
93
|
+
# upcase!
|
94
|
+
# first
|
95
|
+
# end
|
96
|
+
# #=> "!"
|
97
|
+
# @example Use an Array as a DSL
|
98
|
+
# Docile.dsl_eval_with_block_return([]) do
|
99
|
+
# push "a"
|
100
|
+
# push "b"
|
101
|
+
# pop
|
102
|
+
# push "c"
|
103
|
+
# length
|
104
|
+
# end
|
105
|
+
# #=> 2
|
106
|
+
# @note Use with an *imperative* DSL (commands modify the context object)
|
107
|
+
# @param dsl [Object] context object whose methods make up the DSL
|
108
|
+
# @param args [Array] arguments to be passed to the block
|
109
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
110
|
+
# `dsl` context object
|
111
|
+
# @return [Object] the return value from executing the block
|
112
|
+
#
|
113
|
+
# source://docile//lib/docile.rb#87
|
114
|
+
def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end
|
115
|
+
|
116
|
+
class << self
|
117
|
+
# Execute a block in the context of an object whose methods represent the
|
118
|
+
# commands in a DSL.
|
119
|
+
#
|
120
|
+
# Use this method to execute an *imperative* DSL, which means that:
|
121
|
+
#
|
122
|
+
# 1. Each command mutates the state of the DSL context object
|
123
|
+
# 2. The return value of each command is ignored
|
124
|
+
# 3. The final return value is the original context object
|
125
|
+
#
|
126
|
+
# @example Use a String as a DSL
|
127
|
+
# Docile.dsl_eval("Hello, world!") do
|
128
|
+
# reverse!
|
129
|
+
# upcase!
|
130
|
+
# end
|
131
|
+
# #=> "!DLROW ,OLLEH"
|
132
|
+
# @example Use an Array as a DSL
|
133
|
+
# Docile.dsl_eval([]) do
|
134
|
+
# push 1
|
135
|
+
# push 2
|
136
|
+
# pop
|
137
|
+
# push 3
|
138
|
+
# end
|
139
|
+
# #=> [1, 3]
|
140
|
+
# @note Use with an *imperative* DSL (commands modify the context object)
|
141
|
+
# @param dsl [Object] context object whose methods make up the DSL
|
142
|
+
# @param args [Array] arguments to be passed to the block
|
143
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
144
|
+
# `dsl` context object
|
145
|
+
# @return [Object] the `dsl` context object after executing the block
|
146
|
+
#
|
147
|
+
# source://docile//lib/docile.rb#45
|
148
|
+
def dsl_eval(dsl, *args, **_arg2, &block); end
|
149
|
+
|
150
|
+
# Execute a block in the context of an immutable object whose methods,
|
151
|
+
# and the methods of their return values, represent the commands in a DSL.
|
152
|
+
#
|
153
|
+
# Use this method to execute a *functional* DSL, which means that:
|
154
|
+
#
|
155
|
+
# 1. The original DSL context object is never mutated
|
156
|
+
# 2. Each command returns the next DSL context object
|
157
|
+
# 3. The final return value is the value returned by the last command
|
158
|
+
#
|
159
|
+
# @example Use a frozen String as a DSL
|
160
|
+
# Docile.dsl_eval_immutable("I'm immutable!".freeze) do
|
161
|
+
# reverse
|
162
|
+
# upcase
|
163
|
+
# end
|
164
|
+
# #=> "!ELBATUMMI M'I"
|
165
|
+
# @example Use a Float as a DSL
|
166
|
+
# Docile.dsl_eval_immutable(84.5) do
|
167
|
+
# fdiv(2)
|
168
|
+
# floor
|
169
|
+
# end
|
170
|
+
# #=> 42
|
171
|
+
# @note Use with a *functional* DSL (commands return successor
|
172
|
+
# context objects)
|
173
|
+
# @param dsl [Object] immutable context object whose methods make up the
|
174
|
+
# initial DSL
|
175
|
+
# @param args [Array] arguments to be passed to the block
|
176
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
177
|
+
# `dsl` context object and successor return values
|
178
|
+
# @return [Object] the return value of the final command in the block
|
179
|
+
#
|
180
|
+
# source://docile//lib/docile.rb#128
|
181
|
+
def dsl_eval_immutable(dsl, *args, **_arg2, &block); end
|
182
|
+
|
183
|
+
# Execute a block in the context of an object whose methods represent the
|
184
|
+
# commands in a DSL, and return *the block's return value*.
|
185
|
+
#
|
186
|
+
# Use this method to execute an *imperative* DSL, which means that:
|
187
|
+
#
|
188
|
+
# 1. Each command mutates the state of the DSL context object
|
189
|
+
# 2. The return value of each command is ignored
|
190
|
+
# 3. The final return value is the original context object
|
191
|
+
#
|
192
|
+
# @example Use a String as a DSL
|
193
|
+
# Docile.dsl_eval_with_block_return("Hello, world!") do
|
194
|
+
# reverse!
|
195
|
+
# upcase!
|
196
|
+
# first
|
197
|
+
# end
|
198
|
+
# #=> "!"
|
199
|
+
# @example Use an Array as a DSL
|
200
|
+
# Docile.dsl_eval_with_block_return([]) do
|
201
|
+
# push "a"
|
202
|
+
# push "b"
|
203
|
+
# pop
|
204
|
+
# push "c"
|
205
|
+
# length
|
206
|
+
# end
|
207
|
+
# #=> 2
|
208
|
+
# @note Use with an *imperative* DSL (commands modify the context object)
|
209
|
+
# @param dsl [Object] context object whose methods make up the DSL
|
210
|
+
# @param args [Array] arguments to be passed to the block
|
211
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
212
|
+
# `dsl` context object
|
213
|
+
# @return [Object] the return value from executing the block
|
214
|
+
#
|
215
|
+
# source://docile//lib/docile.rb#87
|
216
|
+
def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
# This is used to remove entries pointing to Docile's source files
|
221
|
+
# from {Exception#backtrace} and {Exception#backtrace_locations}.
|
222
|
+
#
|
223
|
+
# If {NoMethodError} is caught then the exception object will be extended
|
224
|
+
# by this module to add filter functionalities.
|
225
|
+
#
|
226
|
+
# @api private
|
227
|
+
#
|
228
|
+
# source://docile//lib/docile/backtrace_filter.rb#11
|
229
|
+
module Docile::BacktraceFilter
|
230
|
+
# @api private
|
231
|
+
#
|
232
|
+
# source://docile//lib/docile/backtrace_filter.rb#14
|
233
|
+
def backtrace; end
|
234
|
+
|
235
|
+
# @api private
|
236
|
+
#
|
237
|
+
# source://docile//lib/docile/backtrace_filter.rb#19
|
238
|
+
def backtrace_locations; end
|
239
|
+
end
|
240
|
+
|
241
|
+
# @api private
|
242
|
+
#
|
243
|
+
# source://docile//lib/docile/backtrace_filter.rb#12
|
244
|
+
Docile::BacktraceFilter::FILTER_PATTERN = T.let(T.unsafe(nil), Regexp)
|
245
|
+
|
246
|
+
# Operates in the same manner as {FallbackContextProxy}, but replacing
|
247
|
+
# the primary `receiver` object with the result of each proxied method.
|
248
|
+
#
|
249
|
+
# This is useful for implementing DSL evaluation for immutable context
|
250
|
+
# objects.
|
251
|
+
#
|
252
|
+
#
|
253
|
+
# @api private
|
254
|
+
# @see Docile.dsl_eval_immutable
|
255
|
+
#
|
256
|
+
# source://docile//lib/docile/chaining_fallback_context_proxy.rb#17
|
257
|
+
class Docile::ChainingFallbackContextProxy < ::Docile::FallbackContextProxy
|
258
|
+
# Proxy methods as in {FallbackContextProxy#method_missing}, replacing
|
259
|
+
# `receiver` with the returned value.
|
260
|
+
#
|
261
|
+
# @api private
|
262
|
+
#
|
263
|
+
# source://docile//lib/docile/chaining_fallback_context_proxy.rb#20
|
264
|
+
def method_missing(method, *args, **_arg2, &block); end
|
265
|
+
end
|
266
|
+
|
267
|
+
# A namespace for functions relating to the execution of a block against a
|
268
|
+
# proxy object.
|
269
|
+
#
|
270
|
+
# @api private
|
271
|
+
#
|
272
|
+
# source://docile//lib/docile/execution.rb#8
|
273
|
+
module Docile::Execution
|
274
|
+
private
|
275
|
+
|
276
|
+
# Execute a block in the context of an object whose methods represent the
|
277
|
+
# commands in a DSL, using a specific proxy class.
|
278
|
+
#
|
279
|
+
# @api private
|
280
|
+
# @param dsl [Object] context object whose methods make up the
|
281
|
+
# (initial) DSL
|
282
|
+
# @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context
|
283
|
+
# @param args [Array] arguments to be passed to the block
|
284
|
+
# @param block [Proc] the block of DSL commands to be executed
|
285
|
+
# @return [Object] the return value of the block
|
286
|
+
#
|
287
|
+
# source://docile//lib/docile/execution.rb#19
|
288
|
+
def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end
|
289
|
+
|
290
|
+
class << self
|
291
|
+
# Execute a block in the context of an object whose methods represent the
|
292
|
+
# commands in a DSL, using a specific proxy class.
|
293
|
+
#
|
294
|
+
# @api private
|
295
|
+
# @param dsl [Object] context object whose methods make up the
|
296
|
+
# (initial) DSL
|
297
|
+
# @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context
|
298
|
+
# @param args [Array] arguments to be passed to the block
|
299
|
+
# @param block [Proc] the block of DSL commands to be executed
|
300
|
+
# @return [Object] the return value of the block
|
301
|
+
#
|
302
|
+
# source://docile//lib/docile/execution.rb#19
|
303
|
+
def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
# A proxy object with a primary receiver as well as a secondary
|
308
|
+
# fallback receiver.
|
309
|
+
#
|
310
|
+
# Will attempt to forward all method calls first to the primary receiver,
|
311
|
+
# and then to the fallback receiver if the primary does not handle that
|
312
|
+
# method.
|
313
|
+
#
|
314
|
+
# This is useful for implementing DSL evaluation in the context of an object.
|
315
|
+
#
|
316
|
+
#
|
317
|
+
# @api private
|
318
|
+
# @see Docile.dsl_eval
|
319
|
+
#
|
320
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#20
|
321
|
+
class Docile::FallbackContextProxy
|
322
|
+
# @api private
|
323
|
+
# @param receiver [Object] the primary proxy target to which all methods
|
324
|
+
# initially will be forwarded
|
325
|
+
# @param fallback [Object] the fallback proxy target to which any methods
|
326
|
+
# not handled by `receiver` will be forwarded
|
327
|
+
# @return [FallbackContextProxy] a new instance of FallbackContextProxy
|
328
|
+
#
|
329
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#46
|
330
|
+
def initialize(receiver, fallback); end
|
331
|
+
|
332
|
+
# @api private
|
333
|
+
# @return [Array<Symbol>] Instance variable names, excluding
|
334
|
+
# {NON_PROXIED_INSTANCE_VARIABLES}
|
335
|
+
#
|
336
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#85
|
337
|
+
def instance_variables; end
|
338
|
+
|
339
|
+
# Proxy all methods, excluding {NON_PROXIED_METHODS}, first to `receiver`
|
340
|
+
# and then to `fallback` if not found.
|
341
|
+
#
|
342
|
+
# @api private
|
343
|
+
#
|
344
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#91
|
345
|
+
def method_missing(method, *args, **_arg2, &block); end
|
346
|
+
end
|
347
|
+
|
348
|
+
# The set of methods which will **not** fallback from the block's context
|
349
|
+
# to the dsl object.
|
350
|
+
#
|
351
|
+
# @api private
|
352
|
+
#
|
353
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#30
|
354
|
+
Docile::FallbackContextProxy::NON_FALLBACK_METHODS = T.let(T.unsafe(nil), Set)
|
355
|
+
|
356
|
+
# The set of instance variables which are local to this object and hidden.
|
357
|
+
# All other instance variables will be copied in and out of this object
|
358
|
+
# from the scope in which this proxy was created.
|
359
|
+
#
|
360
|
+
# @api private
|
361
|
+
#
|
362
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#35
|
363
|
+
Docile::FallbackContextProxy::NON_PROXIED_INSTANCE_VARIABLES = T.let(T.unsafe(nil), Set)
|
364
|
+
|
365
|
+
# The set of methods which will **not** be proxied, but instead answered
|
366
|
+
# by this object directly.
|
367
|
+
#
|
368
|
+
# @api private
|
369
|
+
#
|
370
|
+
# source://docile//lib/docile/fallback_context_proxy.rb#23
|
371
|
+
Docile::FallbackContextProxy::NON_PROXIED_METHODS = T.let(T.unsafe(nil), Set)
|
372
|
+
|
373
|
+
# The current version of this library
|
374
|
+
#
|
375
|
+
# source://docile//lib/docile/version.rb#5
|
376
|
+
Docile::VERSION = T.let(T.unsafe(nil), String)
|