add Pry::Platform.#1670
Conversation
Platform is a category module that adds utility functions for querying platform information relating to Pry. Some methods are moved from BaseHelpers, and for backwards compatibility included via 'include Pry::Platform'. module_function is not used by BaseHelpers anymore, in favor of include/extend being used in its place. There is also less indentation noise in BaseHelpers module. With "_pry_.h" (available on the backup master branch) these methods exist on a single module that doesn't pollute the command scope, although for backwards compatibility we still include the functions as top-level command functions.
| !!(RbConfig::CONFIG['host_os'] =~ /linux/i) | ||
| end | ||
| module Pry::Helpers; end | ||
| module Pry::Helpers::BaseHelpers |
There was a problem hiding this comment.
why not just nest it:
module Pry::Helpers
module Base
...
end
endThere was a problem hiding this comment.
I prefer opening classes and modules like so:
class Foo::Bar::Baz
endfor the simple reason that you don't add unnecessary indentation levels, and constant lookup is absolute (Foo::Daz.new), so it is transparent to the reader. Leads to nicer looking code ime.
| @@ -0,0 +1,93 @@ | |||
| module Pry::Platform | |||
| extend self | |||
There was a problem hiding this comment.
is this equivalent to module_function ?
There was a problem hiding this comment.
not exactly, the methods aren't registered as private, but i don't think that's an issue? For Pry#h it was a hassle.
| # enabled). Infers where to send the output if used as a mixin. | ||
| # DEPRECATED. | ||
| def stagger_output(text, out = nil) | ||
| if defined?(_pry_) && _pry_ |
There was a problem hiding this comment.
in what situatio would _pry_ not be defined? just curious
There was a problem hiding this comment.
singleton method: Pry::Helpers::BaseHelpers.stagger_output
|
Closing this in favour of continuing work in my own fork, which has less red tape and procedure slow review to get stuff merged. @banister will keep an eye and merge what he likes back into pry. |
|
@banister as discussed privately, it would be nice to merge this one for plugins (pry-media in particular). I need to know when pry is running on Linux so I can choose |
|
Oh, you approved already. Okay I'll wait for CI and then squash-merge. |
pkgsrc change: add support for pkg_alternatives ### HEAD #### Features * Add Pry::Testable, an improved modular replacement for PryTestHelpers. **breaking change**. See pull request [#1679](pry/pry#1679). * Add a new category module: "Pry::Platform". Loosely related to #1668 below. See pull request [#1670](pry/pry#1670) * Add `mac_osx?` and `linux?` utility functions to Pry::Helpers::BaseHelpers. See pull request [#1668](pry/pry#1668). * Add utility functions for drawing colorised text on a colorised background. See pull request [#1673](pry/pry#1673). #### Bug fixes * Fix a case of infinite recursion in `Pry::Method::WeirdMethodLocator#find_method_in_superclass` that users of the [Hanami](http://hanamirb.org/) web framework experienced and reported since 2015. See pull request [#1639](pry/pry#1689). * Fix a bug where Method objects were not returned for setters inherited from a default (Pry::Config::Default). Eg, this is no longer an error: pry(main)> d = Pry::Config.from_hash({}, Pry::Config::Default.new) pry(main)> d.method(:exception_whitelist=) # Error See pull request [#1688](pry/pry#1688). * Do not capture unused Proc objects in Text helper methods `no_color` and `no_paging`, for performance reasons. Improve the documentation of both methods. See pull request [#1691](pry/pry#1691). * Fix `String#pp` output color. See pull request [#1674](pry/pry#1674). ### 0.11.0 * Add alias 'whereami[?!]+' for 'whereami' command. ([#1597](pry/pry#1597)) * Improve Ruby 2.4 support ([#1611](pry/pry#1611)): * Deprecated constants are hidden from `ls` output by default, use the `-d` switch to see them. * Fix warnings that originate in Pry while using the repl. * Improve completion speed in large applications. ([#1588](pry/pry#1588)) * Pry::ColorPrinter.pp: add `newline` argument and pass it on to PP. ([#1603](pry/pry#1603)) * Use `less` or system pager pager on MS Windows if it is available. ([#1512](pry/pry#1512)) * Add `Pry.configure` as an alternative to the current way of changing configuration options in `.pryrc` files. ([#1502](pry/pry#1502)) * Add `Pry::Config::Behavior#eager_load!` to add a possible workaround for issues like ([#1501](pry/pry#1501)) * Remove Slop as a runtime dependency by vendoring v3.4 as Pry::Slop. People can depend on Slop v4 and Pry at the same time without running into version conflicts. ([#1497](pry/pry#1497)) * Fix auto-indentation of code that uses a single-line rescue ([#1450](pry/pry#1450)) * Remove "Pry::Config#refresh", please use "Pry::Config#clear" instead. * Defining a method called "ls" no longer breaks the "ls" command ([#1407](pry/pry#1407)) * Don't raise when directory permissions don't allow file expansion ([#1432](pry/pry#1432)) * Syntax highlight <tt> tags in documentation output. * Add support for BasicObject subclasses who implement their own #inspect (#1341) * Fix 'include RSpec::Matchers' at the top-level (#1277) * Add 'gem-readme' command, prints the README file bundled with a rubygem * Add 'gem-search' command, searches for a gem with the rubygems.org HTTP API * Fixed bug in the `cat` command where it was impossible to use line numbers with files ([#1349](pry/pry#1349)) * Fixed uncaught Errno::EOPNOTSUPP exception when $stdout is a socket ([#1352](pry/pry#1352)) * Display a warning when you cd'ed inside a C object and executed 'show-source' without arguments ([#691](pry/pry#691)) * Make the stagger_output method more reliable by reusing possibly available Pry instance ([#1364](pry/pry#1364)) * Make the 'gem-install' message less confusing by removing backticks ([#1350](pry/pry#1350)) * Fixed error when Pry was trying to load incompatible versions of plugins ([#1312](pry/pry#1312)) * Fixed bug when `hist --clear` led to ArgumentError ([#1340](pry/pry#1340)) * Fixed the "uninitialized constant Pry::ObjectPath::StringScanner" exception during autocomplete ([#1330](pry/pry#1330)) * Secured usage of colours with special characters (RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE) in Pry::Helpers::Text ([#493](pry/pry#493 (comment))) * Fixed regression with `pry -e` when it messes the terminal ([#1387](pry/pry#1387)) * Fixed regression with space prefixes of expressions ([#1369](pry/pry#1369)) * Introduced the new way to define hooks for commands (with `Pry.hooks.add_hook("{before,after}_commandName")`). The old way is deprecated, but still supported (with `Pry.commands.{before,after}_command`) ([#651](pry/pry#651)) * Removed old API's using `Pry::Hooks.from_hash` altogether * Removed hints on Foreman support (see [this](ddollar/foreman#536)) * Fixed support for the tee command ([#1334](pry/pry#1334)) * Implemented support for CDPATH for ShellCommand ([#1433](pry/pry#1433), [#1434](pry/pry#1434)) * `Pry::CLI.parse_options` does not start Pry anymore ([#1393](pry/pry#1393)) * The gem uses CPU-less platforms for Windows now ([#1410](pry/pry#1410)) * Add `Pry::Config::Memoization` to make it easier to implement your own `Pry::Config::Default` class.([#1503](pry/pry#1503)) * Lazy load the config defaults for `Pry.config.history` and `Pry.config.gist`.
Platform is a category module that adds utility functions for querying
platform information relating to Pry.
Some methods are moved from BaseHelpers, and for backwards compatibility
included via 'include Pry::Platform'.
module_function is not used by BaseHelpers anymore, in favour of
include/extend being used in its place.
There is also less indentation noise in BaseHelpers module.
With
_pry_.h(available on the backup master branch) these methodsexist on a single module that doesn't pollute the command scope, although
for backwards compatibility we still include the functions as top-level
command functions.