All Projects β†’ piotrmurach β†’ strings-ansi

piotrmurach / strings-ansi

Licence: MIT license
Handle ANSI escape codes in strings

Programming Languages

ruby
36898 projects - #4 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to strings-ansi

strings-truncation
Truncate strings with fullwidth characters and ANSI codes.
Stars: ✭ 45 (+164.71%)
Mutual labels:  rubygem, strings, ansi
Chalk
πŸ– Terminal string styling done right
Stars: ✭ 17,566 (+103229.41%)
Mutual labels:  ansi, strip-ansi
strip-ansi-stream
Strip ANSI escape codes
Stars: ✭ 32 (+88.24%)
Mutual labels:  ansi, strip-ansi
strings-case
Convert strings between different cases.
Stars: ✭ 65 (+282.35%)
Mutual labels:  rubygem, strings
Strings
A set of useful functions for transforming strings.
Stars: ✭ 111 (+552.94%)
Mutual labels:  strings, ansi
Str metrics
Ruby gem (native extension in Rust) providing implementations of various string metrics
Stars: ✭ 68 (+300%)
Mutual labels:  rubygem, strings
glimmer-dsl-opal
Glimmer DSL for Opal (Pure-Ruby Web GUI and Auto-Webifier of Desktop Apps)
Stars: ✭ 22 (+29.41%)
Mutual labels:  rubygem
kotter
A declarative, Kotlin-idiomatic API for writing dynamic console applications.
Stars: ✭ 355 (+1988.24%)
Mutual labels:  ansi
slice
A JavaScript implementation of Python's negative indexing and extended slice syntax.
Stars: ✭ 53 (+211.76%)
Mutual labels:  strings
algoexpert
AlgoExpert is an online platform that helps software engineers to prepare for coding and technical interviews.
Stars: ✭ 8 (-52.94%)
Mutual labels:  strings
ocr space
Free Online OCR for Ruby - Convert images to text
Stars: ✭ 62 (+264.71%)
Mutual labels:  rubygem
tty-link
Hyperlinks in your terminal
Stars: ✭ 30 (+76.47%)
Mutual labels:  rubygem
LeetCode
Solution to LeetCode Problems in Python and Golang 🎯
Stars: ✭ 12 (-29.41%)
Mutual labels:  strings
envs
Easy access of environment variables from Python with support for typing (ex. booleans, strings, lists, tuples, integers, floats, and dicts). Now with CLI settings file converter.
Stars: ✭ 25 (+47.06%)
Mutual labels:  strings
ckwin
C-Kermit for Windows - scriptable internet and serial communications with terminal emulation
Stars: ✭ 35 (+105.88%)
Mutual labels:  ansi
Algorithm-Implementation
This is our effort to collect the best implementations to tough algorithms. All codes are written in c++.
Stars: ✭ 16 (-5.88%)
Mutual labels:  strings
django-concurrency-talk
🎭 Database Integrity in Django: Safely Handling Critical Data in Distributed Systems
Stars: ✭ 49 (+188.24%)
Mutual labels:  ansi
rack-session-smart cookie
Slightly smarter session cookies for Rack 2 apps
Stars: ✭ 43 (+152.94%)
Mutual labels:  rubygem
rarbg
Ruby client for the RARBG Torrent API.
Stars: ✭ 17 (+0%)
Mutual labels:  rubygem
ruby-lokalise-api
Lokalise API v2 Ruby interface.
Stars: ✭ 17 (+0%)
Mutual labels:  rubygem
Strings logo

Strings::ANSI

Gem Version Actions CI Build status Maintainability Coverage Status Inline docs

Handle ANSI escape codes in strings.

Strings::ANSI provides ANSI handling component for Strings.

Installation

Add this line to your application's Gemfile:

gem 'strings-ansi'

And then execute:

$ bundle

Or install it yourself as:

$ gem install strings-ansi

Contents

Usage

The Strings::ANSI is a module that can check if a string has ANSI escape codes:

Strings::ANSI.ansi?("\e[32mHello\e[0m")
# => true

It can also check if a string consists of only ANSI codes:

Strings::ANSI.only_ansi?("\e[32mHello\e[0m")
# => false

Finally, you can remove any ANSI codes from a string:

Strings::ANSI.sanitize("\e[32mHello\e[0m")
# => "Hello"

2. API

2.1 ansi?

To check if a string includes ANSI escape codes use ansi? like so:

Strings::ANSI.ansi?("\e[33;44mfoo\e[0m")
# => true

2.2 only_ansi?

To check if a string includes only ANSI escape codes use only_ansi?:

Strings::ANSI.only_ansi?("\e[33;44mfoo\e[0m")
# => false

2.3 sanitize

To remove ANSI codes from a string use sanitize:

Strings::ANSI.sanitize("\e[0;33;49mHello\e[0m")
# => Hello

3. Extending String class

Though it is highly discouraged to pollute core Ruby classes, you can add the required methods to String class by using refinements.

For example, if you wish to only extend strings with sanitize method do:

module MyStringExt
  refine String do
    def sanitize
      Strings::ANSI.sanitize(self)
    end
  end
end

This will make sanitize method available for any strings where refinement is applied:

using MyStringExt

string.sanitize("\e[32mHello\e[0m")
# => Hello

Alternatively, if you want to include all the Strings::ANSI methods:

require 'strings/ansi/extensions'

using Strings::ANSI::Extensions

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/strings-ansi. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Strings::ANSI project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

Copyright

Copyright (c) 2018 Piotr Murach. See LICENSE for further details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].