ree_lib 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +91 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +8 -0
- data/lib/ree_lib/.gitignore +4 -0
- data/lib/ree_lib/.ree/templates/package/.gitignore +0 -0
- data/lib/ree_lib/.ree/templates/package/.rspec +2 -0
- data/lib/ree_lib/.ree/templates/package/<%=package_subdir_name%>/<%=package_name%>/.gitkeep +0 -0
- data/lib/ree_lib/.ree/templates/package/<%=package_subdir_name%>/<%=package_name%>.rb +15 -0
- data/lib/ree_lib/.ree/templates/package/Package.schema.json +0 -0
- data/lib/ree_lib/.ree/templates/package/bin/console +5 -0
- data/lib/ree_lib/.ree/templates/package/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/.ree/templates/package/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/.rspec +3 -0
- data/lib/ree_lib/.vscode-ree/templates/functions/template.rb +12 -0
- data/lib/ree_lib/.vscode-ree/templates/spec_template.rb +9 -0
- data/lib/ree_lib/Packages.schema.json +89 -0
- data/lib/ree_lib/bin/console +5 -0
- data/lib/ree_lib/packages/.vscode-ree/templates/spec_template.rb +11 -0
- data/lib/ree_lib/packages/ree_array/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_array/.rspec +2 -0
- data/lib/ree_lib/packages/ree_array/Package.schema.json +41 -0
- data/lib/ree_lib/packages/ree_array/bin/console +5 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/group_by.rb +26 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/in_groups.rb +61 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/in_groups_of.rb +56 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/index_by.rb +14 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/split_by.rb +34 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array/functions/wrap.rb +31 -0
- data/lib/ree_lib/packages/ree_array/package/ree_array.rb +7 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/group_by.schema.json +31 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/in_groups.schema.json +39 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/in_groups_of.schema.json +39 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/index_by.schema.json +31 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/split_by.schema.json +35 -0
- data/lib/ree_lib/packages/ree_array/schemas/ree_array/functions/wrap.schema.json +27 -0
- data/lib/ree_lib/packages/ree_array/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/group_by_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/in_groups_of_spec.rb +51 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/in_groups_spec.rb +43 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/index_by_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/split_by_spec.rb +32 -0
- data/lib/ree_lib/packages/ree_array/spec/ree_array/functions/wrap_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_array/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_dao/.gitignore +1 -0
- data/lib/ree_lib/packages/ree_dao/.rspec +2 -0
- data/lib/ree_lib/packages/ree_dao/Package.schema.json +48 -0
- data/lib/ree_lib/packages/ree_dao/bin/console +5 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/beans/connections.rb +20 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/dataset_extensions.rb +243 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/dsl.rb +130 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_connection.rb +103 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_dao.rb +26 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_pg_connection.rb +37 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_sqlite_connection.rb +25 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao.rb +16 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/beans/connections.schema.json +15 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_connection.schema.json +38 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_dao.schema.json +39 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_pg_connection.schema.json +38 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_sqlite_connection.schema.json +38 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/dsl.schema.json +24 -0
- data/lib/ree_lib/packages/ree_dao/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/build_sqlite_connection_spec.rb +230 -0
- data/lib/ree_lib/packages/ree_dao/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_date/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_date/.rspec +2 -0
- data/lib/ree_lib/packages/ree_date/Package.schema.json +229 -0
- data/lib/ree_lib/packages/ree_date/bin/console +5 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/advance.rb +31 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/all_month.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/all_quarter.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/all_week.rb +21 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/all_year.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/beginning_of_month.rb +21 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/beginning_of_quarter.rb +25 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/beginning_of_week.rb +21 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/beginning_of_year.rb +23 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/change.rb +28 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/constants.rb +17 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/days_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/days_in_month.rb +25 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/days_since.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/days_to_week_start.rb +21 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/end_of_month.rb +19 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/end_of_quarter.rb +25 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/end_of_week.rb +26 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/end_of_year.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/friday.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/is_after.rb +13 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/is_before.rb +13 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/is_week_day.rb +17 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/is_weekend.rb +17 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/monday.rb +17 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/months_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/months_since.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_day.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_month.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_occurring.rb +39 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_quarter.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_week.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/next_year.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/parse.rb +13 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_day.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_month.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_occurring.rb +39 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_quarter.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_week.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/prev_year.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/quarters_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/quarters_since.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/saturday.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/sunday.rb +17 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/thursday.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/today.rb +13 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/tomorrow.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/tuesday.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/wednesday.rb +18 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/weeks_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/weeks_since.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/years_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/years_since.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date/functions/yesterday.rb +16 -0
- data/lib/ree_lib/packages/ree_date/package/ree_date.rb +9 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/advance.schema.json +31 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/all_month.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/all_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/all_week.schema.json +54 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/all_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/beginning_of_month.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/beginning_of_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/beginning_of_week.schema.json +54 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/beginning_of_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/change.schema.json +31 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/days_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/days_in_month.schema.json +38 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/days_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/days_to_week_start.schema.json +38 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/end_of_month.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/end_of_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/end_of_week.schema.json +54 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/end_of_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/friday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/is_after.schema.json +31 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/is_before.schema.json +31 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/is_week_day.schema.json +34 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/is_weekend.schema.json +34 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/monday.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/months_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/months_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_month.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_occurring.schema.json +62 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_quarter.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_week.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/next_year.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/parse.schema.json +27 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_month.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_occurring.schema.json +62 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_quarter.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_week.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/prev_year.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/quarters_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/quarters_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/saturday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/sunday.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/thursday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/today.schema.json +24 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/tomorrow.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/tuesday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/wednesday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/weeks_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/weeks_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/years_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/years_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_date/schemas/ree_date/functions/yesterday.schema.json +42 -0
- data/lib/ree_lib/packages/ree_date/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/advance_spec.rb +33 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/all_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/all_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/all_week_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/all_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/beginning_of_month_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/beginning_of_quarter_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/beginning_of_week_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/beginning_of_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/change_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/days_ago_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/days_in_month_spec.rb +23 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/days_since_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/days_to_week_start_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/end_of_month_spec.rb +21 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/end_of_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/end_of_week_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/end_of_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/friday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/is_after_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/is_before_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/is_week_day_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/is_weekend_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/monday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/months_ago_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/months_since_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_day_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_month_spec.rb +16 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_occurring_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_quarter_spec.rb +16 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_week_spec.rb +16 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/next_year_spec.rb +16 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/parse_spec.rb +21 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_day_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_month_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_occurring_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_quarter_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_week_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/prev_year_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/quarters_ago_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/quarters_since_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/saturday_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/sunday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/thursday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/today_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/tomorrow_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/tuesday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/wednesday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/weeks_ago_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/weeks_since_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/years_ago_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/years_since_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/ree_date/functions/yesterday_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_date/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_datetime/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_datetime/.rspec +2 -0
- data/lib/ree_lib/packages/ree_datetime/Package.schema.json +384 -0
- data/lib/ree_lib/packages/ree_datetime/bin/console +5 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/advance.rb +55 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_day.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_hour.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_minute.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_month.rb +21 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_quarter.rb +21 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_week.rb +22 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/all_year.rb +21 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_day.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_hour.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_minute.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_month.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_quarter.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_week.rb +26 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/beginning_of_year.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/change.rb +47 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/constants.rb +157 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/days_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/days_diff.rb +36 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/days_since.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/distance_of_time_in_words.rb +161 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_day.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_hour.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_minute.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_month.rb +26 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_quarter.rb +27 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_week.rb +26 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/end_of_year.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/find_human_time_zones_by_offset.rb +31 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/find_time_zones_by_offset.rb +30 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/find_tzinfo.rb +15 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/friday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/general_diff.rb +63 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/get_default_time_zone.rb +15 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/get_default_tz_info.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/hours_ago.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/hours_diff.rb +36 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/hours_since.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/human_zone_offset.rb +24 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/in_default_time_zone.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/in_time_zone.rb +20 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/is_after.rb +13 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/is_before.rb +13 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/is_week_day.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/is_weekend.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/minutes_ago.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/minutes_diff.rb +33 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/minutes_since.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/monday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/months_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/months_diff.rb +36 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/months_since.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_day.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_hour.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_month.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_occurring.rb +37 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_quarter.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_week.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/next_year.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/now.rb +22 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/offset_to_string.rb +27 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/parse.rb +13 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_day.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_hour.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_month.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_occurring.rb +43 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_quarter.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_week.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/prev_year.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/quarters_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/quarters_since.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/saturday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/seconds_ago.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/seconds_diff.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/seconds_since.rb +14 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/set_default_time_zone.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/sunday.rb +25 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/thursday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/time_ago_in_words.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/tomorrow.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/tuesday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/wednesday.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/weeks_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/weeks_diff.rb +34 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/weeks_since.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/years_ago.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/years_diff.rb +37 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/years_since.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/yesterday.rb +16 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/functions/zone_offset.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime/locales/en.yml +38 -0
- data/lib/ree_lib/packages/ree_datetime/package/ree_datetime.rb +20 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/advance.schema.json +62 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_day.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_hour.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_minute.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_month.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_week.schema.json +54 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/all_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_hour.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_minute.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_month.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_week.schema.json +62 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/beginning_of_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/change.schema.json +31 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/days_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/days_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/days_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/distance_of_time_in_words.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_hour.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_minute.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_month.schema.json +58 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_quarter.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_week.schema.json +62 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/end_of_year.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/find_human_time_zones_by_offset.schema.json +34 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/find_time_zones_by_offset.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/find_tzinfo.schema.json +27 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/friday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/general_diff.schema.json +106 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/get_default_time_zone.schema.json +24 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/get_default_tz_info.schema.json +39 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/hours_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/hours_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/hours_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/human_time_zone_offset.schema.json +34 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/human_zone_offset.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/in_default_time_zone.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/in_time_zone.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/is_after.schema.json +31 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/is_before.schema.json +31 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/is_week_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/is_weekend.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/minutes_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/minutes_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/minutes_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/monday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/months_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/months_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/months_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_hour.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_month.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_occurring.schema.json +54 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_quarter.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_week.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/next_year.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/now.schema.json +39 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/offset_to_string.schema.json +27 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/parse.schema.json +27 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_day.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_hour.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_month.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_occurring.schema.json +54 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_quarter.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_week.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/prev_year.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/quarters_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/quarters_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/saturday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/seconds_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/seconds_diff.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/seconds_since.schema.json +31 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/set_default_time_zone.schema.json +34 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/sunday.schema.json +58 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/thursday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/time_ago_in_words.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/tomorrow.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/tuesday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/wednesday.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/weeks_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/weeks_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/weeks_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/years_ago.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/years_diff.schema.json +50 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/years_since.schema.json +46 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/yesterday.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/schemas/ree_datetime/functions/zone_offset.schema.json +42 -0
- data/lib/ree_lib/packages/ree_datetime/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/advance_spec.rb +40 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_day_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_hour_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_minute_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_week_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/all_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_day_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_hour_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_minute_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_week_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/beginning_of_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/change_spec.rb +25 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/constants_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/days_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/days_diff_spec.rb +29 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/days_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/distance_of_time_in_words_spec.rb +33 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_day_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_hour_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_minute_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_week_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/end_of_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/find_human_time_zones_by_offset_spec.rb +12 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/find_time_zones_by_offset_spec.rb +12 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/friday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/general_diff_spec.rb +37 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/hours_ago_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/hours_diff_spec.rb +29 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/hours_since_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/human_zone_offset_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/in_default_time_zone_spec.rb +18 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/in_time_zone_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/is_after_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/is_before_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/is_week_day_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/is_weekend_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/minutes_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/minutes_diff_spec.rb +46 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/minutes_since_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/monday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/months_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/months_diff_spec.rb +28 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/months_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_day_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_hour_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_occurring_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_week_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/next_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/now_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/offset_to_string_spec.rb +23 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/parse_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_day_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_hour_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_month_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_occurring_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_quarter_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_week_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/prev_year_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/quarters_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/quarters_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/saturday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/seconds_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/seconds_diff_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/seconds_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/sunday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/thursday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/tomorrow_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/tuesday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/wednesday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/weeks_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/weeks_diff_spec.rb +29 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/weeks_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/years_ago_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/years_diff_spec.rb +56 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/years_since_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/yesterday_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_datetime/spec/ree_datetime/functions/zone_offset_spec.rb +9 -0
- data/lib/ree_lib/packages/ree_datetime/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_dto/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_dto/.rspec +2 -0
- data/lib/ree_lib/packages/ree_dto/Package.schema.json +18 -0
- data/lib/ree_lib/packages/ree_dto/bin/console +5 -0
- data/lib/ree_lib/packages/ree_dto/package/ree_dto/entity_dsl.rb +109 -0
- data/lib/ree_lib/packages/ree_dto/package/ree_dto.rb +7 -0
- data/lib/ree_lib/packages/ree_dto/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_dto/spec/ree_dto/entity_dsl_spec.rb +106 -0
- data/lib/ree_lib/packages/ree_dto/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_enum/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_enum/.rspec +2 -0
- data/lib/ree_lib/packages/ree_enum/Package.schema.json +23 -0
- data/lib/ree_lib/packages/ree_enum/bin/console +5 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/contractable.rb +13 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/dsl.rb +103 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/enumerable.rb +68 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/value.rb +60 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/values.rb +46 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum.rb +25 -0
- data/lib/ree_lib/packages/ree_enum/spec/package_schema_spec.rb +16 -0
- data/lib/ree_lib/packages/ree_enum/spec/ree_enum/dsl_spec.rb +151 -0
- data/lib/ree_lib/packages/ree_enum/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_errors/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_errors/.rspec +2 -0
- data/lib/ree_lib/packages/ree_errors/Package.schema.json +51 -0
- data/lib/ree_lib/packages/ree_errors/bin/console +5 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/auth_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/build_error.rb +20 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/conflict_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/error.rb +45 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/error_factory.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/invalid_param_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/not_found_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/payment_required_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/permission_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors/validation_error.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/package/ree_errors.rb +7 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/auth_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/build_error.schema.json +35 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/conflict_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/invalid_param_err.schema.json +31 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/invalid_param_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/not_found_err.schema.json +38 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/not_found_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/payment_required_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/permission_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/domain_errors/validation_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/auth_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/build_error.schema.json +35 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/conflict_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/invalid_param_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/not_found_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/payment_required_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/permission_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/schemas/ree_errors/validation_error.schema.json +22 -0
- data/lib/ree_lib/packages/ree_errors/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/auth_error_spec.rb +53 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/invalid_param_error_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/locales/en.yml +3 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/not_found_error_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/payment_required_error_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/permission_error_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/spec/ree_errors/validation_error_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_errors/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_hash/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_hash/.rspec +2 -0
- data/lib/ree_lib/packages/ree_hash/Package.schema.json +54 -0
- data/lib/ree_lib/packages/ree_hash/bin/console +5 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/contracts/hash_keys_contract.rb +34 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/build_filter_keys.rb +26 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/except.rb +69 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/merge.rb +49 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/slice.rb +72 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/stringify_keys.rb +15 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/symbolize_keys.rb +15 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/transform_keys.rb +45 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash/functions/transform_values.rb +51 -0
- data/lib/ree_lib/packages/ree_hash/package/ree_hash.rb +11 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/build_filter_keys.schema.json +27 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/convert_key.schema.json +27 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/except.schema.json +42 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/merge.schema.json +39 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/slice.schema.json +43 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/stringify_keys.schema.json +34 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/symbolize_keys.schema.json +34 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/transform_key.schema.json +31 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/transform_keys.schema.json +35 -0
- data/lib/ree_lib/packages/ree_hash/schemas/ree_hash/functions/transform_values.schema.json +35 -0
- data/lib/ree_lib/packages/ree_hash/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/except_spec.rb +205 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/merge_spec.rb +47 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/slice_spec.rb +133 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/stringify_keys_spec.rb +12 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/symbolize_keys_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/transform_keys_spec.rb +77 -0
- data/lib/ree_lib/packages/ree_hash/spec/ree_hash/functions/transform_values_spec.rb +39 -0
- data/lib/ree_lib/packages/ree_hash/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_http/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_http/.rspec +2 -0
- data/lib/ree_lib/packages/ree_http/Package.schema.json +69 -0
- data/lib/ree_lib/packages/ree_http/bin/console +5 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/constants.rb +13 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/build_request.rb +132 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/build_request_executor.rb +71 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/execute_request.rb +123 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_delete.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_exec.rb +99 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_get.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_head.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_options.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_patch.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_post.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/functions/http_put.rb +23 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http/http_exceptions.rb +9 -0
- data/lib/ree_lib/packages/ree_http/package/ree_http.rb +30 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/add_auth.schema.json +31 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/basic_auth.schema.json +15 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/build_request.schema.json +70 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/build_requester.schema.json +46 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/execute_request.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/build_request.schema.json +58 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/build_request_executor.schema.json +31 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/execute_request.schema.json +51 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/get_default_logger.schema.json +27 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_delete.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_exec.schema.json +62 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_get.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_head.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_options.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_patch.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_post.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/http_put.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/functions/set_default_logger.schema.json +27 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/get.schema.json +22 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/get_http.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/http_delete.schema.json +74 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/http_get.schema.json +66 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/http_patch.schema.json +74 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/http_post.schema.json +74 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/http_put.schema.json +74 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/post.schema.json +22 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/post_http.schema.json +42 -0
- data/lib/ree_lib/packages/ree_http/schemas/ree_http/response.schema.json +15 -0
- data/lib/ree_lib/packages/ree_http/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_delete_spec.rb +165 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_get_spec.rb +165 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_options_spec.rb +184 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_patch_spec.rb +176 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_post_spec.rb +183 -0
- data/lib/ree_lib/packages/ree_http/spec/ree_http/functions/http_put_spec.rb +176 -0
- data/lib/ree_lib/packages/ree_http/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_i18n/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_i18n/.rspec +2 -0
- data/lib/ree_lib/packages/ree_i18n/Package.schema.json +50 -0
- data/lib/ree_lib/packages/ree_i18n/bin/console +5 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/add_load_path.rb +16 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/get_default_locale.rb +12 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/get_locale.rb +12 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/set_default_locale.rb +12 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/set_locale.rb +12 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/t.rb +90 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n/functions/with_locale.rb +12 -0
- data/lib/ree_lib/packages/ree_i18n/package/ree_i18n.rb +10 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/add_load_path.schema.json +34 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/get_default_locale.schema.json +24 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/get_locale.schema.json +24 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/set_default_locale.schema.json +27 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/set_locale.schema.json +27 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/t.schema.json +48 -0
- data/lib/ree_lib/packages/ree_i18n/schemas/ree_i18n/functions/with_locale.schema.json +31 -0
- data/lib/ree_lib/packages/ree_i18n/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_i18n/spec/ree_i18n/functions/locales/en.yml +12 -0
- data/lib/ree_lib/packages/ree_i18n/spec/ree_i18n/functions/locales/ru.yml +11 -0
- data/lib/ree_lib/packages/ree_i18n/spec/ree_i18n/functions/set_locale_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_i18n/spec/ree_i18n/functions/t_spec.rb +113 -0
- data/lib/ree_lib/packages/ree_i18n/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_json/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_json/.rspec +2 -0
- data/lib/ree_lib/packages/ree_json/Package.schema.json +27 -0
- data/lib/ree_lib/packages/ree_json/bin/console +5 -0
- data/lib/ree_lib/packages/ree_json/package/ree_json/constants.rb +30 -0
- data/lib/ree_lib/packages/ree_json/package/ree_json/functions/from_json.rb +29 -0
- data/lib/ree_lib/packages/ree_json/package/ree_json/functions/to_json.rb +44 -0
- data/lib/ree_lib/packages/ree_json/package/ree_json.rb +10 -0
- data/lib/ree_lib/packages/ree_json/schemas/ree_json/functions/from_json.schema.json +35 -0
- data/lib/ree_lib/packages/ree_json/schemas/ree_json/functions/to_json.schema.json +35 -0
- data/lib/ree_lib/packages/ree_json/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/from_json_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/to_json_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_json/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_logger/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_logger/.rspec +2 -0
- data/lib/ree_lib/packages/ree_logger/Package.schema.json +67 -0
- data/lib/ree_lib/packages/ree_logger/bin/console +5 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/appender.rb +14 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/file_appender.rb +58 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/stdout_appender.rb +31 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/beans/logger.rb +48 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/config.rb +65 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/formatters/colorized_formatter.rb +82 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/formatters/default_formatter.rb +33 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/formatters/formatter.rb +5 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/functions/build_logger.rb +27 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/log_event.rb +2 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/multi_logger.rb +153 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb +26 -0
- data/lib/ree_lib/packages/ree_logger/package/ree_logger.rb +21 -0
- data/lib/ree_lib/packages/ree_logger/schemas/ree_logger/beans/logger.schema.json +46 -0
- data/lib/ree_lib/packages/ree_logger/schemas/ree_logger/config.schema.json +38 -0
- data/lib/ree_lib/packages/ree_logger/schemas/ree_logger/formatters/colorized_formatter.schema.json +30 -0
- data/lib/ree_lib/packages/ree_logger/schemas/ree_logger/formatters/default_formatter.schema.json +30 -0
- data/lib/ree_lib/packages/ree_logger/schemas/ree_logger/functions/build_logger.schema.json +39 -0
- data/lib/ree_lib/packages/ree_logger/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/appender_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/file_appender_spec.rb +72 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/stdout_appender_spec.rb +44 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/beans/logger_spec.rb +62 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/colorized_formatter_spec.rb +48 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/default_formatter_spec.rb +48 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/formatter_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/multi_logger_spec.rb +117 -0
- data/lib/ree_lib/packages/ree_logger/spec/spec_helper.rb +19 -0
- data/lib/ree_lib/packages/ree_mapper/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_mapper/.rspec +2 -0
- data/lib/ree_lib/packages/ree_mapper/Package.schema.json +34 -0
- data/lib/ree_lib/packages/ree_mapper/bin/console +5 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/default_factory.rb +19 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/dsl.rb +49 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/coercion_error.rb +4 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/error.rb +4 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/type_error.rb +4 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/errors/unsupported_type_error.rb +4 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/field.rb +54 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/functions/build_mapper_factory.rb +31 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/functions/build_mapper_strategy.rb +28 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper.rb +88 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper_factory.rb +129 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper_factory_proxy.rb +44 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/mapper_strategy.rb +60 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/strategy_outputs/object_output.rb +19 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/strategy_outputs/strategy_output.rb +21 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/strategy_outputs/string_key_hash_output.rb +14 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/strategy_outputs/symbol_key_hash_output.rb +14 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/abstract_type.rb +17 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/array.rb +70 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/bool.rb +36 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date.rb +41 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/date_time.rb +41 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/float.rb +37 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/integer.rb +37 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/string.rb +27 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/types/time.rb +41 -0
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb +166 -0
- data/lib/ree_lib/packages/ree_mapper/schemas/ree_mapper/default_factory.schema.json +30 -0
- data/lib/ree_lib/packages/ree_mapper/schemas/ree_mapper/functions/build_mapper_factory.schema.json +27 -0
- data/lib/ree_lib/packages/ree_mapper/schemas/ree_mapper/functions/build_mapper_strategy.schema.json +35 -0
- data/lib/ree_lib/packages/ree_mapper/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb +52 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/functions/build_mapper_factory_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/functions/build_mapper_strategy_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_factory_spec.rb +76 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/mapper_spec.rb +104 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/array_spec.rb +144 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/bool_spec.rb +159 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_spec.rb +111 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/date_time_spec.rb +135 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/float_spec.rb +107 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/hash_spec.rb +99 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/integer_spec.rb +111 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/string_spec.rb +63 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/time_spec.rb +135 -0
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/types/type_options_spec.rb +176 -0
- data/lib/ree_lib/packages/ree_mapper/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_migrator/.gitignore +1 -0
- data/lib/ree_lib/packages/ree_migrator/.rspec +2 -0
- data/lib/ree_lib/packages/ree_migrator/Package.schema.json +47 -0
- data/lib/ree_lib/packages/ree_migrator/bin/console +5 -0
- data/lib/ree_lib/packages/ree_migrator/package/ree_migrator/functions/apply_migration.rb +37 -0
- data/lib/ree_lib/packages/ree_migrator/package/ree_migrator/functions/apply_migrations.rb +94 -0
- data/lib/ree_lib/packages/ree_migrator/package/ree_migrator/functions/create_migrations_table.rb +28 -0
- data/lib/ree_lib/packages/ree_migrator/package/ree_migrator/functions/migrate_db.rb +34 -0
- data/lib/ree_lib/packages/ree_migrator/package/ree_migrator.rb +16 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/apply_data_migration.schema.json +31 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/apply_migration.schema.json +50 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/apply_migrations.schema.json +71 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/apply_schema_migration.schema.json +31 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/create_data_migrations_table.schema.json +27 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/create_migrations_table.schema.json +27 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/create_schema_migrations_table.schema.json +27 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/functions/migrate_db.schema.json +54 -0
- data/lib/ree_lib/packages/ree_migrator/schemas/ree_migrator/migrate_db.schema.json +15 -0
- data/lib/ree_lib/packages/ree_migrator/spec/db.rb +22 -0
- data/lib/ree_lib/packages/ree_migrator/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/apply_migration_spec.rb +58 -0
- data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/apply_migrations_spec.rb +49 -0
- data/lib/ree_lib/packages/ree_migrator/spec/ree_migrator/functions/migrate_db_spec.rb +38 -0
- data/lib/ree_lib/packages/ree_migrator/spec/sample_migrations/data_migrations/populate_test_table.rb +11 -0
- data/lib/ree_lib/packages/ree_migrator/spec/sample_migrations/migrations.yml +3 -0
- data/lib/ree_lib/packages/ree_migrator/spec/sample_migrations/schema_migrations/create_test_table.rb +7 -0
- data/lib/ree_lib/packages/ree_migrator/spec/spec_helper.rb +9 -0
- data/lib/ree_lib/packages/ree_number/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_number/.rspec +2 -0
- data/lib/ree_lib/packages/ree_number/Package.schema.json +62 -0
- data/lib/ree_lib/packages/ree_number/bin/console +5 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/constants.rb +25 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/digit_count.rb +14 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_currency.rb +79 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_delimited.rb +45 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_human.rb +210 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_human_size.rb +168 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_ordinalized.rb +60 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_percentage.rb +55 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_phone.rb +85 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/number_to_rounded.rb +100 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/functions/round_helper.rb +69 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number/locales/en.yml +58 -0
- data/lib/ree_lib/packages/ree_number/package/ree_number.rb +15 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/digit_count.schema.json +27 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_currency.schema.json +54 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_delimited.schema.json +31 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_human.schema.json +70 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_human_size.schema.json +62 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_ordinalized.schema.json +38 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_percentage.schema.json +46 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_phone.schema.json +31 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/number_to_rounded.schema.json +62 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_number/functions/round_helper.schema.json +38 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/digit_count.schema.json +27 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_currency.schema.json +54 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_delimited.schema.json +31 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_human.schema.json +78 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_human_size.schema.json +62 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_ordinalized.schema.json +38 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_percentage.schema.json +46 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_phone.schema.json +31 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/number_to_rounded.schema.json +62 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/round.schema.json +27 -0
- data/lib/ree_lib/packages/ree_number/schemas/ree_numbers/functions/round_helper.schema.json +38 -0
- data/lib/ree_lib/packages/ree_number/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/digit_count_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_currency_spec.rb +51 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_delimited_spec.rb +23 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_human_size_spec.rb +68 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_human_spec.rb +50 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_ordinalized_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_percentage_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_phone_spec.rb +27 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/number_to_rounded_spec.rb +79 -0
- data/lib/ree_lib/packages/ree_number/spec/ree_number/functions/round_helper_spec.rb +9 -0
- data/lib/ree_lib/packages/ree_number/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_object/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_object/.rspec +2 -0
- data/lib/ree_lib/packages/ree_object/Package.schema.json +43 -0
- data/lib/ree_lib/packages/ree_object/bin/console +5 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/as_json.rb +74 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/deep_dup.rb +92 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/deep_freeze.rb +60 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/is_blank.rb +40 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/not_blank.rb +15 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object/functions/to_obj.rb +97 -0
- data/lib/ree_lib/packages/ree_object/package/ree_object.rb +7 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/as_json.schema.json +27 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/deep_dup.schema.json +31 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/deep_freeze.schema.json +27 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/is_blank.schema.json +27 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/not_blank.schema.json +34 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/to_hash.schema.json +27 -0
- data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/to_obj.schema.json +54 -0
- data/lib/ree_lib/packages/ree_object/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/as_json_spec.rb +172 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_dup_spec.rb +166 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_freeze_spec.rb +112 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/is_blank_spec.rb +33 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/not_blank_spec.rb +33 -0
- data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/to_obj_spec.rb +174 -0
- data/lib/ree_lib/packages/ree_object/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_string/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_string/.rspec +2 -0
- data/lib/ree_lib/packages/ree_string/Package.schema.json +83 -0
- data/lib/ree_lib/packages/ree_string/bin/console +5 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/acronyms_camelize_regex.rb +13 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/acronyms_underscore_regex.rb +13 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/camelize.rb +55 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/dasherize.rb +17 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/deconstantize.rb +21 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/demodulize.rb +28 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/indent.rb +51 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/pluralize.rb +13 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/remove.rb +22 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/squish.rb +26 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/strip_heredoc.rb +32 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/truncate.rb +52 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/truncate_bytes.rb +60 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/truncate_words.rb +45 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/underscore.rb +43 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string/functions/upcase_first.rb +19 -0
- data/lib/ree_lib/packages/ree_string/package/ree_string.rb +10 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/acronyms_camelize_regex.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/acronyms_underscore_regex.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/camelize.schema.json +38 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/dasherize.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/deconstantize.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/demodulize.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/indent.schema.json +35 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/is_blank.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/pluralize.schema.json +35 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/remove.schema.json +31 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/squish.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/strip_heredoc.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/truncate.schema.json +35 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/truncate_bytes.schema.json +35 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/truncate_words.schema.json +35 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/underscore.schema.json +38 -0
- data/lib/ree_lib/packages/ree_string/schemas/ree_string/functions/upcase_first.schema.json +27 -0
- data/lib/ree_lib/packages/ree_string/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/camelize_spec.rb +31 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/dasherize_spec.rb +9 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/deconstantize_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/demodulize_spec.rb +15 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/indent_spec.rb +17 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/pluralize_spec.rb +10 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/remove_spec.rb +12 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/squish_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/strip_heredoc_spec.rb +44 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/truncate_bytes_spec.rb +40 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/truncate_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/truncate_words_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/underscore_spec.rb +26 -0
- data/lib/ree_lib/packages/ree_string/spec/ree_string/functions/upcase_first_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_string/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_swagger/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_swagger/.rspec +2 -0
- data/lib/ree_lib/packages/ree_swagger/Package.schema.json +61 -0
- data/lib/ree_lib/packages/ree_swagger/bin/console +5 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/beans/type_definitions_repo.rb +95 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/endpoint_dto.rb +13 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/path_dto.rb +8 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_endpoint_schema.rb +105 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_parameters.rb +48 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_request_body_schema.rb +43 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_schema.rb +26 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_serializer_schema.rb +36 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/get_caster_definition.rb +16 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/get_serializer_definition.rb +16 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/register_type.rb +20 -0
- data/lib/ree_lib/packages/ree_swagger/package/ree_swagger.rb +9 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/beans/type_definitions_repo.schema.json +15 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_endpoint_schema.schema.json +50 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_parameters.schema.json +50 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_request_body_schema.schema.json +38 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_schema.schema.json +46 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_serializer_schema.schema.json +34 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/get_caster_definition.schema.json +38 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/get_serializer_definition.schema.json +38 -0
- data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/register_type.schema.json +42 -0
- data/lib/ree_lib/packages/ree_swagger/spec/functions/build_endpoint_schema_spec.rb +197 -0
- data/lib/ree_lib/packages/ree_swagger/spec/functions/build_parameters_spec.rb +43 -0
- data/lib/ree_lib/packages/ree_swagger/spec/functions/build_schema_spec.rb +41 -0
- data/lib/ree_lib/packages/ree_swagger/spec/functions/build_serializer_schema_spec.rb +110 -0
- data/lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb +57 -0
- data/lib/ree_lib/packages/ree_swagger/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_swagger/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_text/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_text/.rspec +2 -0
- data/lib/ree_lib/packages/ree_text/Package.schema.json +77 -0
- data/lib/ree_lib/packages/ree_text/bin/console +5 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/constants.rb +26 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/escape_html.rb +15 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/escape_javascript.rb +22 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/excerpt.rb +122 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/highlight.rb +74 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb +36 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/sanitize_css.rb +13 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/sanitize_html.rb +93 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/simple_format.rb +135 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/strip_links.rb +31 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/strip_tags.rb +41 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/to_sentence.rb +71 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/unescape_html.rb +15 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/functions/word_wrap.rb +57 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/locales/en.yml +5 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/scrubbers/permit_scrubber.rb +101 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/scrubbers/target_scrubber.rb +11 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text/scrubbers/text_only_scrubber.rb +16 -0
- data/lib/ree_lib/packages/ree_text/package/ree_text.rb +18 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/escape_html.schema.json +27 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/escape_javascript.schema.json +34 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/excerpt.schema.json +42 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/highlight.schema.json +46 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/html_scrubber.schema.json +34 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/safe_join.schema.json +38 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/safe_list_sanitizer.schema.json +24 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/sanitize.schema.json +35 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/sanitize_css.schema.json +27 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/sanitize_html.schema.json +35 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/save_list_sanitizer.schema.json +24 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/simple_format.schema.json +54 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/strip_links.schema.json +27 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/strip_tags.schema.json +34 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/to_sentence.schema.json +58 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/unescape_html.schema.json +27 -0
- data/lib/ree_lib/packages/ree_text/schemas/ree_text/functions/word_wrap.schema.json +31 -0
- data/lib/ree_lib/packages/ree_text/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/escape_html_spec.rb +19 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/escape_javascript_spec.rb +23 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/excerpt_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/highlight_spec.rb +40 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/safe_join_spec.rb +13 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/sanitize_css_spec.rb +11 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/sanitize_html_spec.rb +78 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/simple_format_spec.rb +29 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/strip_links_spec.rb +21 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/strip_tags_spec.rb +38 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/to_sentence_spec.rb +22 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/unescape_html_spec.rb +9 -0
- data/lib/ree_lib/packages/ree_text/spec/ree_text/functions/word_wrap_spec.rb +21 -0
- data/lib/ree_lib/packages/ree_text/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/packages/ree_validator/.gitignore +0 -0
- data/lib/ree_lib/packages/ree_validator/.rspec +2 -0
- data/lib/ree_lib/packages/ree_validator/Package.schema.json +58 -0
- data/lib/ree_lib/packages/ree_validator/bin/console +5 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_email.rb +63 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_exclusion.rb +32 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_inclusion.rb +32 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_length.rb +75 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb +73 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_password.rb +129 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_presence.rb +32 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_regexp.rb +32 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_url.rb +75 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/locales/en.yml +34 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator/locales/ru.yml +34 -0
- data/lib/ree_lib/packages/ree_validator/package/ree_validator.rb +13 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_email.schema.json +38 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_exclusion.schema.json +42 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_inclusion.schema.json +42 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_length.schema.json +42 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_paging.schema.json +54 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_password.schema.json +50 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_presence.schema.json +46 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_regexp.schema.json +42 -0
- data/lib/ree_lib/packages/ree_validator/schemas/ree_validator/functions/validate_url.schema.json +42 -0
- data/lib/ree_lib/packages/ree_validator/spec/package_schema_spec.rb +14 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/locales/fr.yml +4 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_email_spec.rb +23 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_exclusion_spec.rb +39 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_inclusion_spec.rb +39 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_length_spec.rb +48 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_paging_spec.rb +73 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_password_spec.rb +85 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_presence_spec.rb +55 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_regexp_spec.rb +29 -0
- data/lib/ree_lib/packages/ree_validator/spec/ree_validator/functions/validate_url_spec.rb +61 -0
- data/lib/ree_lib/packages/ree_validator/spec/spec_helper.rb +3 -0
- data/lib/ree_lib/ree.setup.rb +7 -0
- data/lib/ree_lib/spec.init.rb +14 -0
- data/lib/ree_lib/version.rb +5 -0
- data/lib/ree_lib.rb +12 -0
- data/sig/ree_lib.rbs +4 -0
- metadata +1270 -0
@@ -0,0 +1,122 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::Excerpt
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :excerpt do
|
7
|
+
link :is_blank, from: :ree_object
|
8
|
+
end
|
9
|
+
|
10
|
+
DEFAULTS = {
|
11
|
+
radius: 100,
|
12
|
+
omission: "...",
|
13
|
+
separator: ""
|
14
|
+
}
|
15
|
+
|
16
|
+
doc(<<~DOC)
|
17
|
+
Extracts an excerpt from +text+ that matches the first instance of +phrase+.
|
18
|
+
The <tt>:radius</tt> option expands the excerpt on each side of the first occurrence of +phrase+ by the number of characters
|
19
|
+
defined in <tt>:radius</tt> (which defaults to 100). If the excerpt radius overflows the beginning or end of the +text+,
|
20
|
+
then the <tt>:omission</tt> option (which defaults to "...") will be prepended/appended accordingly. Use the
|
21
|
+
<tt>:separator</tt> option to choose the delimitation. The resulting string will be stripped in any case. If the +phrase+
|
22
|
+
isn't found, +nil+ is returned.
|
23
|
+
|
24
|
+
excerpt('This is an example', 'an', radius: 5)
|
25
|
+
# => ...s is an exam...
|
26
|
+
|
27
|
+
excerpt('This is an example', 'is', radius: 5)
|
28
|
+
# => This is a...
|
29
|
+
|
30
|
+
excerpt('This is an example', 'is')
|
31
|
+
# => This is an example
|
32
|
+
|
33
|
+
excerpt('This next thing is an example', 'ex', radius: 2)
|
34
|
+
# => ...next...
|
35
|
+
|
36
|
+
excerpt('This is also an example', 'an', radius: 8, omission: '<chop> ')
|
37
|
+
# => <chop> is also an example
|
38
|
+
|
39
|
+
excerpt('This is a very beautiful morning', 'very', separator: ' ', radius: 1)
|
40
|
+
# => ...a very beautiful...
|
41
|
+
DOC
|
42
|
+
|
43
|
+
contract(
|
44
|
+
String,
|
45
|
+
Or[String, Regexp],
|
46
|
+
Ksplat[
|
47
|
+
radius?: Integer,
|
48
|
+
omission?: String,
|
49
|
+
separator?: String
|
50
|
+
] => String
|
51
|
+
)
|
52
|
+
def call(text, phrase, **opts)
|
53
|
+
options = DEFAULTS.merge(opts)
|
54
|
+
|
55
|
+
return if is_blank(text) && is_blank(phrase)
|
56
|
+
|
57
|
+
separator = options[:separator]
|
58
|
+
|
59
|
+
case phrase
|
60
|
+
when Regexp
|
61
|
+
regex = phrase
|
62
|
+
else
|
63
|
+
regex = /#{Regexp.escape(phrase)}/i
|
64
|
+
end
|
65
|
+
|
66
|
+
return unless matches = text.match(regex)
|
67
|
+
phrase = matches[0]
|
68
|
+
|
69
|
+
unless is_blank(separator)
|
70
|
+
text.split(separator).each do |value|
|
71
|
+
if value.match?(regex)
|
72
|
+
phrase = value
|
73
|
+
break
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
first_part, second_part = text.split(phrase, 2)
|
79
|
+
|
80
|
+
prefix, first_part = cut_excerpt_part(:first, first_part, separator, options)
|
81
|
+
postfix, second_part = cut_excerpt_part(:second, second_part, separator, options)
|
82
|
+
|
83
|
+
affix = [first_part, separator, phrase, separator, second_part].join.strip
|
84
|
+
[prefix, affix, postfix].join
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def cut_excerpt_part(part_position, part, separator, options)
|
90
|
+
return "", "" unless part
|
91
|
+
|
92
|
+
radius = options[:radius]
|
93
|
+
omission = options[:omission]
|
94
|
+
|
95
|
+
if separator != ""
|
96
|
+
part = part.split(separator)
|
97
|
+
part.delete("")
|
98
|
+
end
|
99
|
+
|
100
|
+
affix = part.length > radius ? omission : ""
|
101
|
+
|
102
|
+
part = if part_position == :first
|
103
|
+
last(part, radius)
|
104
|
+
else
|
105
|
+
first(part, radius)
|
106
|
+
end
|
107
|
+
|
108
|
+
if separator != ""
|
109
|
+
part = part.join(separator)
|
110
|
+
end
|
111
|
+
|
112
|
+
return affix, part
|
113
|
+
end
|
114
|
+
|
115
|
+
def first(string, limit = 1)
|
116
|
+
string[0, limit] || raise(ArgumentError, "negative limit")
|
117
|
+
end
|
118
|
+
|
119
|
+
def last(string, limit = 1)
|
120
|
+
string[[string.length - limit, 0].max, limit] || raise(ArgumentError, "negative limit")
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::Highlight
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :highlight do
|
7
|
+
link :sanitize_html
|
8
|
+
end
|
9
|
+
|
10
|
+
DEFAULTS = {
|
11
|
+
highlighter: '<mark>\1</mark>',
|
12
|
+
sanitize: true,
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
doc(<<~DOC)
|
16
|
+
Highlights one or more +phrases+ everywhere in +text+ by inserting it into
|
17
|
+
a <tt>:highlighter</tt> string. The highlighter can be specialized by passing <tt>:highlighter</tt>
|
18
|
+
as a single-quoted string with <tt>\1</tt> where the phrase is to be inserted (defaults to
|
19
|
+
<tt><mark>\1</mark></tt>) or passing a block that receives each matched term. By default +text+
|
20
|
+
is sanitized to prevent possible XSS attacks.If the input is trustworthy, passing false
|
21
|
+
for <tt>:sanitize</tt> will turn sanitizing off.
|
22
|
+
|
23
|
+
highlight('You searched for: rails', 'rails')
|
24
|
+
# => You searched for: <mark>rails</mark>
|
25
|
+
|
26
|
+
highlight('You searched for: rails', /for|rails/)
|
27
|
+
# => You searched <mark>for</mark>: <mark>rails</mark>
|
28
|
+
|
29
|
+
highlight('You searched for: ruby, rails, dhh', 'actionpack')
|
30
|
+
# => You searched for: ruby, rails, dhh
|
31
|
+
|
32
|
+
highlight('You searched for: rails', ['for', 'rails'], highlighter: '<em>\1</em>')
|
33
|
+
# => You searched <em>for</em>: <em>rails</em>
|
34
|
+
|
35
|
+
highlight('You searched for: rails', 'rails', highlighter: '<a href="search?q=\1">\1</a>')
|
36
|
+
# => You searched for: <a href="search?q=rails">rails</a>
|
37
|
+
|
38
|
+
highlight('You searched for: rails', 'rails') { |match| link_to(search_path(q: match, match)) }
|
39
|
+
# => You searched for: <a href="search?q=rails">rails</a>
|
40
|
+
|
41
|
+
highlight('<a href="javascript:alert(\'no!\')">ruby</a> on rails', 'rails', sanitize: false)
|
42
|
+
# => <a href="javascript:alert('no!')">ruby</a> on <mark>rails</mark>
|
43
|
+
DOC
|
44
|
+
|
45
|
+
contract(
|
46
|
+
String,
|
47
|
+
Nilor[String, ArrayOf[String], Regexp],
|
48
|
+
Ksplat[
|
49
|
+
highlighter?: String,
|
50
|
+
sanitize?: Bool
|
51
|
+
],
|
52
|
+
Optblock => String
|
53
|
+
)
|
54
|
+
def call(text, phrases = nil, **opts, &block)
|
55
|
+
options = DEFAULTS.merge(opts)
|
56
|
+
|
57
|
+
text = sanitize_html(text) if options[:sanitize]
|
58
|
+
|
59
|
+
if !phrases
|
60
|
+
text
|
61
|
+
else
|
62
|
+
match = Array(phrases).map do |p|
|
63
|
+
Regexp === p ? p.to_s : Regexp.escape(p)
|
64
|
+
end.join("|")
|
65
|
+
|
66
|
+
if block_given?
|
67
|
+
text.gsub(/(#{match})(?![^<]*?>)/i, &block)
|
68
|
+
else
|
69
|
+
highlighter = options[:highlighter]
|
70
|
+
text.gsub(/(#{match})(?![^<]*?>)/i, highlighter)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::SafeJoin
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :safe_join do
|
7
|
+
link :escape_html
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
DEFAULTS = {
|
12
|
+
sep: "$"
|
13
|
+
}
|
14
|
+
|
15
|
+
doc(<<~DOC)
|
16
|
+
This method returns an string similar to what <tt>Array#join</tt>
|
17
|
+
would return. The array is flattened, and all items, including
|
18
|
+
the supplied separator, are HTML escaped.
|
19
|
+
|
20
|
+
safe_join(["<p>foo</p>", "<p>bar</p>"], sep: "<br />")
|
21
|
+
# => "<p>foo</p><br /><p>bar</p>"
|
22
|
+
DOC
|
23
|
+
|
24
|
+
contract(
|
25
|
+
Array,
|
26
|
+
Ksplat[
|
27
|
+
sep?: String
|
28
|
+
] => String
|
29
|
+
)
|
30
|
+
def call(array, **opts)
|
31
|
+
options = DEFAULTS.merge(opts)
|
32
|
+
sep = escape_html(options[:sep])
|
33
|
+
|
34
|
+
array.flatten.map { |i| escape_html(i) }.join(sep)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'set'
|
4
|
+
|
5
|
+
class ReeText::SanitizeHtml
|
6
|
+
include Ree::FnDSL
|
7
|
+
|
8
|
+
fn :sanitize_html do
|
9
|
+
link 'ree_text/scrubbers/permit_scrubber', -> { PermitScrubber }
|
10
|
+
end
|
11
|
+
|
12
|
+
ALLOWED_TAGS = Set.new(
|
13
|
+
%w(
|
14
|
+
strong em b i p code pre tt samp kbd var sub
|
15
|
+
sup dfn cite big small address hr br div span
|
16
|
+
h1 h2 h3 h4 h5 h6 ul ol li dl dt dd abbr
|
17
|
+
acronym a img blockquote del ins
|
18
|
+
)
|
19
|
+
)
|
20
|
+
|
21
|
+
ALLOWED_ATTRIBUTES = Set.new(
|
22
|
+
%w(
|
23
|
+
href src width height alt cite datetime
|
24
|
+
title class name xml:lang abbr
|
25
|
+
)
|
26
|
+
)
|
27
|
+
|
28
|
+
DEFAULTS = {
|
29
|
+
tags: nil,
|
30
|
+
attributes: nil
|
31
|
+
}
|
32
|
+
|
33
|
+
doc(<<~DOC)
|
34
|
+
Sanitizes both html and css via the safe lists found here:
|
35
|
+
https://github.com/flavorjones/loofah/blob/master/lib/loofah/html5/safelist.rb
|
36
|
+
|
37
|
+
Tags and attributes can also be passed to +sanitize+.
|
38
|
+
Passed options take precedence over the class level options.
|
39
|
+
DOC
|
40
|
+
|
41
|
+
contract(
|
42
|
+
String,
|
43
|
+
Kwargs[
|
44
|
+
prune: Bool
|
45
|
+
],
|
46
|
+
Ksplat[
|
47
|
+
tags?: ArrayOf[String],
|
48
|
+
attributes?: ArrayOf[String]
|
49
|
+
] => String
|
50
|
+
).throws(ArgumentError)
|
51
|
+
def call(html, prune: false, **opts)
|
52
|
+
options = DEFAULTS.merge(opts)
|
53
|
+
|
54
|
+
tags = if options[:tags]
|
55
|
+
remove_safelist_tag_combinations(Set.new(options[:tags]))
|
56
|
+
else
|
57
|
+
ALLOWED_TAGS
|
58
|
+
end
|
59
|
+
|
60
|
+
attributes = options[:attributes] ? Set.new(options[:attributes]) : ALLOWED_ATTRIBUTES
|
61
|
+
|
62
|
+
loofah_fragment = Loofah.fragment(html)
|
63
|
+
|
64
|
+
permit_scrubber = PermitScrubber.new(
|
65
|
+
prune: prune,
|
66
|
+
tags: tags,
|
67
|
+
attributes: attributes
|
68
|
+
)
|
69
|
+
|
70
|
+
loofah_fragment.scrub!(permit_scrubber)
|
71
|
+
|
72
|
+
properly_encode(loofah_fragment, encoding: 'UTF-8')
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def properly_encode(fragment, options)
|
78
|
+
fragment.xml? ? fragment.to_xml(options) : fragment.to_html(options)
|
79
|
+
end
|
80
|
+
|
81
|
+
def remove_safelist_tag_combinations(tags)
|
82
|
+
if !loofah_using_html5? && tags.include?("select") && tags.include?("style")
|
83
|
+
tags.delete("style")
|
84
|
+
end
|
85
|
+
|
86
|
+
tags
|
87
|
+
end
|
88
|
+
|
89
|
+
def loofah_using_html5?
|
90
|
+
# future-proofing, see https://github.com/flavorjones/loofah/pull/239
|
91
|
+
Loofah.respond_to?(:html5_mode?) && Loofah.html5_mode?
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::SimpleFormat
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :simple_format do
|
7
|
+
link :escape_html
|
8
|
+
link :sanitize_html
|
9
|
+
link :is_blank, from: :ree_object
|
10
|
+
|
11
|
+
link 'ree_text/functions/constants', -> {
|
12
|
+
TAG_NAME_START_REGEXP & TAG_NAME_REPLACEMENT_CHAR & TAG_NAME_FOLLOWING_REGEXP
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
DEFAULTS = {
|
17
|
+
html_options: {},
|
18
|
+
wrapper_tag: :p,
|
19
|
+
sanitize: false
|
20
|
+
}
|
21
|
+
|
22
|
+
doc(<<~DOC)
|
23
|
+
Returns +text+ transformed into HTML using simple formatting rules.
|
24
|
+
Two or more consecutive newlines (<tt>\n\n</tt> or <tt>\r\n\r\n</tt>) are
|
25
|
+
considered a paragraph and wrapped in <tt><p></tt> tags. One newline
|
26
|
+
(<tt>\n</tt> or <tt>\r\n</tt>) is considered a linebreak and a
|
27
|
+
<tt><br /></tt> tag is appended. This method does not remove the
|
28
|
+
newlines from the +text+.
|
29
|
+
|
30
|
+
You can pass any HTML attributes into <tt>html_options</tt>. These
|
31
|
+
will be added to all created paragraphs.
|
32
|
+
|
33
|
+
==== Options
|
34
|
+
* <tt>:sanitize</tt> - If +false+, does not sanitize +text+.
|
35
|
+
* <tt>:wrapper_tag</tt> - String representing the wrapper tag, defaults to <tt>"p"</tt>
|
36
|
+
|
37
|
+
==== Examples
|
38
|
+
my_text = "Here is some basic text...\n...with a line break."
|
39
|
+
|
40
|
+
simple_format(my_text)
|
41
|
+
# => "<p>Here is some basic text...\n<br />...with a line break.</p>"
|
42
|
+
|
43
|
+
simple_format(my_text, wrapper_tag: "div")
|
44
|
+
# => "<div>Here is some basic text...\n<br />...with a line break.</div>"
|
45
|
+
|
46
|
+
more_text = "We want to put a paragraph...\n\n...right there."
|
47
|
+
|
48
|
+
simple_format(more_text)
|
49
|
+
# => "<p>We want to put a paragraph...</p>\n\n<p>...right there.</p>"
|
50
|
+
|
51
|
+
simple_format("Look ma! A class!", class: 'description')
|
52
|
+
# => "<p class='description'>Look ma! A class!</p>"
|
53
|
+
|
54
|
+
simple_format("<blink>Unblinkable.</blink>", sanitize: true)
|
55
|
+
# => "<p>Unblinkable.</p>"
|
56
|
+
|
57
|
+
simple_format("<blink>Blinkable!</blink> It's true.", sanitize: false)
|
58
|
+
# => "<p><blink>Blinkable!</blink> It's true.</p>"
|
59
|
+
DOC
|
60
|
+
|
61
|
+
contract(
|
62
|
+
Nilor[String],
|
63
|
+
Ksplat[
|
64
|
+
html_options?: Hash,
|
65
|
+
wrapper_tag?: Or[Symbol, String],
|
66
|
+
sanitize?: Bool
|
67
|
+
] => String
|
68
|
+
)
|
69
|
+
def call(text, **opts)
|
70
|
+
options = DEFAULTS.merge(opts)
|
71
|
+
text = sanitize_html(text) if options[:sanitize]
|
72
|
+
wrapper_tag = options[:wrapper_tag]
|
73
|
+
html_options = options[:html_options]
|
74
|
+
paragraphs = split_paragraphs(text)
|
75
|
+
|
76
|
+
if is_blank(paragraphs)
|
77
|
+
content_tag_string(wrapper_tag, nil, html_options)
|
78
|
+
else
|
79
|
+
paragraphs
|
80
|
+
.map! { content_tag_string(wrapper_tag, _1, html_options) }
|
81
|
+
.join("\n\n")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def split_paragraphs(text)
|
88
|
+
return [] if is_blank(text)
|
89
|
+
|
90
|
+
text
|
91
|
+
.dup
|
92
|
+
.to_s
|
93
|
+
.gsub(/\r\n?/, "\n")
|
94
|
+
.split(/\n\n+/)
|
95
|
+
.map { _1.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') || _1 }
|
96
|
+
end
|
97
|
+
|
98
|
+
def content_tag_string(name, content, html_options, escape = true)
|
99
|
+
tag_options = is_blank(html_options) ? nil : tag_options(html_options, escape)
|
100
|
+
name = xml_name_escape(name)
|
101
|
+
|
102
|
+
"<#{name}#{tag_options}>#{content}</#{name}>"
|
103
|
+
end
|
104
|
+
|
105
|
+
def xml_name_escape(name)
|
106
|
+
name = name.to_s
|
107
|
+
return "" if is_blank(name)
|
108
|
+
|
109
|
+
starting_char = name[0].gsub(TAG_NAME_START_REGEXP, TAG_NAME_REPLACEMENT_CHAR)
|
110
|
+
return starting_char if name.size == 1
|
111
|
+
|
112
|
+
following_chars = name[1..-1].gsub(TAG_NAME_FOLLOWING_REGEXP, TAG_NAME_REPLACEMENT_CHAR)
|
113
|
+
starting_char + following_chars
|
114
|
+
end
|
115
|
+
|
116
|
+
def tag_options(html_options, escape = true)
|
117
|
+
output = +""
|
118
|
+
sep = " "
|
119
|
+
|
120
|
+
html_options.each_pair do |key, value|
|
121
|
+
output << sep
|
122
|
+
output << tag_option(key, value, escape)
|
123
|
+
end
|
124
|
+
|
125
|
+
output
|
126
|
+
end
|
127
|
+
|
128
|
+
def tag_option(key, value, escape)
|
129
|
+
key = xml_name_escape(key) if escape
|
130
|
+
value = escape ? escape_html(value) : value.to_s
|
131
|
+
value = value.gsub('"', """) if value.include?('"')
|
132
|
+
|
133
|
+
%(#{key}="#{value}")
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::StripLinks
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :strip_links do
|
7
|
+
link 'ree_text/scrubbers/target_scrubber', -> { TargetScrubber }
|
8
|
+
end
|
9
|
+
|
10
|
+
DEFAULTS = {
|
11
|
+
tags: Set.new(%w(a)),
|
12
|
+
attributes: Set.new(%w(href))
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
doc(<<~DOC)
|
16
|
+
Removes +a+ tags and +href+ attributes leaving only the link text.
|
17
|
+
strip_links('<a href="example.com">Only the link text will be kept.</a>')
|
18
|
+
#
|
19
|
+
# => 'Only the link text will be kept.'
|
20
|
+
DOC
|
21
|
+
|
22
|
+
contract(String => String)
|
23
|
+
def call(html)
|
24
|
+
link_scrubber = TargetScrubber.new(
|
25
|
+
tags: DEFAULTS[:tags],
|
26
|
+
attributes: DEFAULTS[:attributes]
|
27
|
+
)
|
28
|
+
|
29
|
+
Loofah.scrub_fragment(html, link_scrubber).to_s
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::StripTags
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :strip_tags do
|
7
|
+
link :is_blank, from: :ree_object
|
8
|
+
link 'ree_text/scrubbers/text_only_scrubber', -> { TextOnlyScrubber }
|
9
|
+
end
|
10
|
+
|
11
|
+
doc(<<~DOC)
|
12
|
+
Strips all HTML tags from +html+, including comments and special characters.
|
13
|
+
|
14
|
+
strip_tags("Strip <i>these</i> tags!")
|
15
|
+
# => Strip these tags!
|
16
|
+
|
17
|
+
strip_tags("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
|
18
|
+
# => Bold no more! See more here...
|
19
|
+
|
20
|
+
strip_tags("<div id='top-bar'>Welcome to my website!</div>")
|
21
|
+
# => Welcome to my website!
|
22
|
+
|
23
|
+
strip_tags("> A quote from Smith & Wesson")
|
24
|
+
# => > A quote from Smith & Wesson
|
25
|
+
DOC
|
26
|
+
|
27
|
+
contract(String => String)
|
28
|
+
def call(html)
|
29
|
+
return html if is_blank(html)
|
30
|
+
|
31
|
+
loofah_fragment = Loofah.fragment(html)
|
32
|
+
loofah_fragment.scrub!(TextOnlyScrubber.new)
|
33
|
+
properly_encode(loofah_fragment, encoding: 'UTF-8')
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def properly_encode(fragment, options)
|
39
|
+
fragment.xml? ? fragment.to_xml(options) : fragment.to_html(options)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::ToSentence
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :to_sentence do
|
7
|
+
link :safe_join
|
8
|
+
link :escape_html
|
9
|
+
link :t, from: :ree_i18n
|
10
|
+
end
|
11
|
+
|
12
|
+
DEFAULTS = {
|
13
|
+
locale: :en
|
14
|
+
}
|
15
|
+
|
16
|
+
DEFAULT_CONNECTORS = {
|
17
|
+
words_connector: ", ",
|
18
|
+
two_words_connector: " and ",
|
19
|
+
last_word_connector: ", and "
|
20
|
+
}
|
21
|
+
|
22
|
+
doc(<<~DOC)
|
23
|
+
Converts the array to a comma-separated sentence where the last element is
|
24
|
+
joined by the connector word.
|
25
|
+
|
26
|
+
to_sentence(["one", "two", "three"]) # => "one, two, and three"
|
27
|
+
to_sentence(["one", "two", "three"], words_connector: " ")) # => "one two, and three"
|
28
|
+
to_sentence(["one", "two", "three"], last_word_connector: ", and also ") # =>"one, two, and also three"
|
29
|
+
to_sentence(["one", "two"], two_words_connector: " & ") # => "one & two"
|
30
|
+
DOC
|
31
|
+
|
32
|
+
contract(
|
33
|
+
Array,
|
34
|
+
Kwargs[
|
35
|
+
locale: Symbol
|
36
|
+
],
|
37
|
+
Ksplat[
|
38
|
+
words_connector?: String,
|
39
|
+
two_words_connector?: String,
|
40
|
+
last_word_connector?: String
|
41
|
+
] => String
|
42
|
+
)
|
43
|
+
def call(array, locale: nil, **opts)
|
44
|
+
locale = locale || DEFAULTS[:locale]
|
45
|
+
|
46
|
+
i18n_connectors = t("sentence", locale: locale, default_by_locale: :en)
|
47
|
+
DEFAULT_CONNECTORS.merge(i18n_connectors)
|
48
|
+
options = DEFAULT_CONNECTORS.merge(opts)
|
49
|
+
|
50
|
+
case array.length
|
51
|
+
when 0
|
52
|
+
""
|
53
|
+
when 1
|
54
|
+
escape_html(array[0])
|
55
|
+
when 2
|
56
|
+
safe_join([array[0], array[1]], sep: options[:two_words_connector])
|
57
|
+
else
|
58
|
+
safe_join(
|
59
|
+
[
|
60
|
+
safe_join(
|
61
|
+
array[0...-1],
|
62
|
+
sep: options[:words_connector]
|
63
|
+
),
|
64
|
+
options[:last_word_connector],
|
65
|
+
array[-1]
|
66
|
+
],
|
67
|
+
sep: ""
|
68
|
+
)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
class ReeText::UnescapeHtml
|
6
|
+
include Ree::FnDSL
|
7
|
+
|
8
|
+
fn :unescape_html
|
9
|
+
|
10
|
+
doc("A utility method for unescaping HTML.")
|
11
|
+
contract(String => String)
|
12
|
+
def call(str)
|
13
|
+
CGI.unescapeHTML(str)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeText::WordWrap
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :word_wrap
|
7
|
+
|
8
|
+
DEFAULTS = {
|
9
|
+
line_width: 80,
|
10
|
+
break_sequence: "\n"
|
11
|
+
}
|
12
|
+
|
13
|
+
doc(<<~DOC)
|
14
|
+
Wraps the +text+ into lines no longer than +line_width+ width. This method
|
15
|
+
breaks on the first whitespace character that does not exceed +line_width+
|
16
|
+
(which is 80 by default).
|
17
|
+
|
18
|
+
word_wrap('Once upon a time')
|
19
|
+
# => Once upon a time
|
20
|
+
|
21
|
+
word_wrap('Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding a successor to the throne turned out to be more trouble than anyone could have imagined...')
|
22
|
+
# => Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding\na successor to the throne turned out to be more trouble than anyone could have\nimagined...
|
23
|
+
|
24
|
+
word_wrap('Once upon a time', line_width: 8)
|
25
|
+
# => Once\nupon a\ntime
|
26
|
+
|
27
|
+
word_wrap('Once upon a time', line_width: 1)
|
28
|
+
# => Once\nupon\na\ntime
|
29
|
+
|
30
|
+
You can also specify a custom +break_sequence+ ("\n" by default)
|
31
|
+
|
32
|
+
word_wrap('Once upon a time', line_width: 1, break_sequence: "\r\n")
|
33
|
+
# => Once\r\nupon\r\na\r\ntime
|
34
|
+
DOC
|
35
|
+
|
36
|
+
contract(
|
37
|
+
String,
|
38
|
+
Ksplat[
|
39
|
+
line_width?: Integer,
|
40
|
+
break_sequence?: String
|
41
|
+
] => String
|
42
|
+
)
|
43
|
+
def call(text, **opts)
|
44
|
+
options = DEFAULTS.merge(opts)
|
45
|
+
formated_text = text.dup
|
46
|
+
|
47
|
+
formated_text.split("\n").collect do |line|
|
48
|
+
if line.length > options[:line_width]
|
49
|
+
line
|
50
|
+
.gsub(/(.{1,#{options[:line_width]}})(\s+|$)/, "\\1#{options[:break_sequence]}")
|
51
|
+
.rstrip
|
52
|
+
else
|
53
|
+
line
|
54
|
+
end
|
55
|
+
end * options[:break_sequence]
|
56
|
+
end
|
57
|
+
end
|