Code Monkey home page Code Monkey logo

direction's Introduction

direction

Build Coverage Downloads Size

Detect the direction of text: left-to-right, right-to-left, or neutral.

Contents

What is this?

This package detects whether text is written left-to-right or right-to-left.

When should I use this?

This is a simple and fast algorithm. It looks at the first strong left-to-right or right-to-left character (for example, the letter a is LTR, the letter ى is RTL). That’s often enough but might be too naïve as it doesn’t take percentages or so into account.

Install

This package is ESM only. In Node.js (version 14.14+, 16.0+), install with npm:

npm install direction

In Deno with esm.sh:

import {direction} from 'https://esm.sh/direction@2'

In browsers with esm.sh:

<script type="module">
  import {direction} from 'https://esm.sh/direction@2?bundle'
</script>

Use

import {direction} from 'direction'

direction('A') // => 'ltr'
direction('anglais') // => 'ltr'
direction('بسيطة') // => 'rtl'
direction('@') // => 'neutral'

API

This package exports the identifier direction. There is no default export.

direction(value)

Get the direction from a given value.

value

Value to check (string, required).

Returns

Direction for value ('ltr', 'rtl', or 'neutral').

CLI

Usage: direction [options] <words...>

Detect the direction of text: left-to-right, right-to-left, or neutral

Options:

  -h, --help           output usage information
  -v, --version        output version number

Usage:

# output directionality
$ direction @
# neutral

# output directionality from stdin
$ echo 'الانجليزية' | direction
# rtl

Types

This package is fully typed with TypeScript. It exports no additional types.

Compatibility

This package is at least compatible with all maintained versions of Node.js. As of now, that is Node.js 14.14+ and 16.0+. It also works in Deno and modern browsers.

Security

This package is safe.

Contribute

Yes please! See How to Contribute to Open Source.

License

MIT © Titus Wormer

direction's People

Contributors

greenkeeperio-bot avatar wooorm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

direction's Issues

ESM + Jest

Because this package is ESM only now and doesn't pre-compile, it complete breaks all unit testing since most (if not all) of them are unable to import ESM files.

    Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

    Here's what you can do:
     • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/en/ecmascript-modules for how to enable it.
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/en/configuration.html

    Details:

    /Users/milesj/Projects/aesthetic-react/node_modules/direction/index.js:16
    export function direction(value) {
    ^^^^^^

    SyntaxError: Unexpected token 'export'

      24 |
      25 | var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
    > 26 |
         | ^
      27 | var getDirection__default = /*#__PURE__*/_interopDefaultLegacy(getDirection);
      28 |
      29 | var hoistNonReactStatics__default = /*#__PURE__*/_interopDefaultLegacy(hoistNonReactStatics);

      at Runtime.createScriptFromCode (../../node_modules/jest-runtime/build/index.js:1350:14)
      at Object.<anonymous> (../core-react/lib/index.js:26:20)

TypeScript support

Hey @wooorm !
This package is 100% what I needed, except we're using TypeScript in strict mode, so I have to workaround this in order to use properly.
Did you ever consider migrating to TypeScript? Or simply exporting definitions?
A project this small I'm sure it'd be fairly easy (willing to push a PR).

Getting wrong text direction when having a mix of languages

I have a text where I have a mix of 2 languages.
For example:
test זהו סעיף בעברית.

זהו סעיף בעברית alone is RTL and test alone is LTR.
However when having : test זהו סעיף בעברית I get LTR.

I believe it's a bug somehow or a feature to add as I think it should know in percentage how much RTL exists over LTR in a text then format it correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.