npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lotto-parser

v1.0.26

Published

lotto-parser is a compiler for list lotto to object JSON

Downloads

3

Readme

lotto-parser

lotto-parser is a compiler for list lotto to object JSON

Features

  • Easy-to-use compiler
  • Handles all modern JS features
  • Bundles commonjs and es module formats
  • Supports complicated peer-dependencies
  • Supports Typescript

Demo

link to demo https://codesandbox.io/s/peaceful-khayyam-lsvctm

Usage/Examples

import { lottoCompiler } from "lotto-parser";

import { useState } from "react";

function App() {
  const [lottoBill, setLottoBill] = useState(`1 30*30
123 100*100
12 20*20
21 20*20
3^ 20*20
^4 20*20
%7 50*50
8% 50*50
567 100*100
^89 100*100
1^2 100*100
3^4 40*40
56^ 40*40
123# 100*100*100
`);

  return (
    <>
      <textarea
        value={lottoBill}
        onChange={(event) => setLottoBill(event.target.value)}
        style={{ width: "50%", height: "200px" }}
      />
      <br />
      <button
        onClick={() => {
          if (lottoBill) {
            try {
              let test = lottoCompiler(lottoBill);
              console.log(test);
            } catch (err) {
              console.log("err", err);
            }
          }
        }}
      >
        confirm
      </button>
    </>
  );
}

export default App;

Condition

| เงื่อนไขการเขียนบิล | ความหมาย | | ----------------- | ------------------------------------------------------------------ | | 12 100*100 | ซื้อ 12 บน 100 บาท ล่าง 100 บาท | | 21 100*10 | ซื้อ 21 บน 100 บาท ล่าง 100 บาท | | ^3 100*100 | ซื้อ 3 รูดหน้า บน 100 บาท ล่าง 100 บาท | | 4^ 100*100 | ซื้อ 4 รูดหลัง บน 100 บาท ล่าง 100 บาท | | 1% 100*100 | ซื้อ 1 แบบ 19 ประตู บน 100 บาท ล่าง 100 บาท | | %1 100*100 | ซื้อ 1 แบบ 19 ประตู บน 100 บาท ล่าง 100 บาท (%อยู่ก่อนหรือหลังก็ได้)| | 123 100*100 | ซื้อ 123 บน 100 บาท โต๊ด 100 บาท | | ^23 100*100 | ซื้อ 23 รูดหลักแรก บน 100 บาท โต๊ด 100 บาท | | 2^3 100*100 | ซื้อ 23 รูดหลักสอง บน 100 บาท โต๊ด 100 บาท | | 23^ 100*100 | ซื้อ 23 รูดหลักสาม บน 100 บาท โต๊ด 100 บาท | | 12 100*0 | ซื้อ 12 บน 100 บาท ไม่ซื้อล่าง | | 23 0*100 | ซื้อ 23 ล่าง 100 บาท ไม่ซื้อบน | | 123 100*0 | ซื้อ 123 บน 100 บาท ไม่ซื้อโต๊ด | | 456 100*0 | ซื้อ 456 โต๊ด 100 บาท ไม่ซื้อบน | | 23^ 100*0 | ซื้อ 23 รูดหลักสาม บน 100 บาท ไม่ซื้อโต๊ด | | 1 100*100 | ซื้อเลข 1 วิ่ง 100 บาท ล่าง 100 บาท | | 123 0*0*100 | ซื้อเลข 123 โต๊ด 100 บาท (ใส่ *ตัวที่ 3 มาจะเป็นโต๊ด ถ้าไม่ใส่ tod_price จะเป็น undefined )| | 123 100*100*100 | ซื้อเลข 123 บน 100 ล่าง 100 โต๊ด 100 บาท | | 123# 100*100*100 | ซื้อเลข 123 แบบหกกลับ บน 100 ล่าง 100 โต๊ด 100|

Response

จะ response object ออกมา มี type ดังนี้

| key | type | description | | ----------------| ------|-------------| | type | number | ใช้เพื่อบอกประเภทของหวยถ้า 1 จะเป็นเลขวิ่ง 2 จะเป็นเลขสองตัว 3 จะเป็นเลข 3 ตัว| | lotto | string | หวยที่ซื้อ | | front_price | number | ราคาที่ซื้อเลขบน ถ้าส่งมาเป็น 0 แสดงว่าไม่ได้ซื้อ | | back_price | number | ราคาที่ซื้อเลขล่าง แต่ถ้า type เป็น 3 จะเป็นการซื้อโต๊ด ถ้าส่งมาเป็น 0 แสดงว่าไม่ได้ซื้อ |

example 1

12 100*100
[
   {
      "type": 2,
      "lotto": "12",
      "front_price": 100,
      "back_price": 100,
      "tod_price": undefined
   }
]

example 2

123 100*100
[
    {
      "type": 3,
      "lotto": "123",
      "front_price": 100,
      "back_price": 100,
      "tod_price": undefined
   }
]

example 3

^3 100*100
[
    {
        "type": 2,
        "lotto": "03",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "13",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "23",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "33",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "43",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "53",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "63",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "73",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "83",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    },
    {
        "type": 2,
        "lotto": "93",
        "front_price": 100,
        "back_price": 100,
        "tod_price": undefined
    }
]

example 3

123# 100*100*100
[
    {
        "type": 3,
        "lotto": "123",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    },
    {
        "type": 3,
        "lotto": "132",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    },
    {
        "type": 3,
        "lotto": "213",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    },
    {
        "type": 3,
        "lotto": "231",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    },
    {
        "type": 3,
        "lotto": "312",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    },
    {
        "type": 3,
        "lotto": "321",
        "front_price": 100,
        "back_price": 100,
        "tod_price": 100
    }
]

Response Error

If general error

{
    "message": "Oops Something Went Wrong",
    "name": "SyntaxError"
}

If compiler error

{
    "message": "Expected \"%\", \"^\", [0-9], or end of input but \"a\" found.",
    "expected": [
        {
            "type": "class",
            "parts": [
                [
                    "0",
                    "9"
                ]
            ],
            "inverted": false,
            "ignoreCase": false
        },
        {
            "type": "literal",
            "text": "^",
            "ignoreCase": false
        },
        {
            "type": "literal",
            "text": "%",
            "ignoreCase": false
        },
        {
            "type": "end"
        }
    ],
    "found": "a",
    "location": {
        "start": {
            "offset": 0,
            "line": 1,
            "column": 1
        },
        "end": {
            "offset": 1,
            "line": 1,
            "column": 2
        }
    },
    "name": "SyntaxError"
}

License

MIT License