Coder Social home page Coder Social logo

reasonml.github.io's Introduction

Reason Website

This code is used to generate https://reasonml.github.io. It pulls in files from docs/ and website/ to generate HTML files served on the site.

website/ contains the JS, CSS, images and other files (and some markdown files in blog which are separated from docs/; it's not too important).

cd website && npm install && npm run start to start the development server & watcher.

Don't use npm run build. It's mostly for debugging.

In the end, we spit out normal HTML with all but a few critical JS dependencies removed, including ReactJS itself. It's a full static website: super lightweight, portable, unfancy, but good looking. And it works with JS turned off!

Two special files:

  • sidebars.json: lists the sections.
  • siteConfig.json: some header and i18n configs.

During your development, most changes will be picked up at each browser refresh. If you touch these two files or blog/, however, you'll have to restart the server to see the changes.

Translations

The entire site can be translated via the Crowdin project. This repo only has the canonical English documentation. Don't manually edit things in i18n/.

Debugging

console.logs appear in your terminal! Since the site itself is React-free.

Building and Deploying

Changes from the source branch are automatically picked into master branch by CI and then published.

Building the Playground

cd website && npm install

For modifying the actual try playground source code, run npm run bundle-try-playground:dev to start a watcher. Once you're done, run npm run bundle-try-playground:prod once.

Building with custom BuckleScript/etc

To build the actual bsReasonReact.js, refmt.js, stdlibBundle.js, reasonReactBundle.js:

You'll need to have this repository and the BuckleScript repository cloned. These will likely be next to each other in the directory structure.

  1. Inside the BuckleScript repository, follow the Setup guide.

  2. Follow the Contributing to the BS Playground Bundle guide.

  3. Run BS_PLAYGROUND=../../reasonml.github.io/website/playground/bs node scripts/repl.js

  4. Inside the reasonml.github.io repository, run cd website && yarn

  5. Then run, yarn prepare in the same place.

  6. Finally, run node setupSomeArtifacts.js

If this command fails, ping @chenglou in Discord.

reasonml.github.io's People

Contributors

af avatar anmonteiro avatar aweary avatar behrends avatar chenglou avatar cristianoc avatar cullophid avatar davesnx avatar fhammerschmidt avatar glennsl avatar gregoirevda avatar jaredly avatar jmxo avatar johann-sonntagbauer avatar jordwalke avatar jsdf avatar kyldvs avatar lpalmes avatar moox avatar mxdavis avatar nikgraf avatar omerzach avatar phated avatar philraj avatar rickyvetter avatar ryyppy avatar vrq avatar yangshun avatar yawaramin avatar zploskey 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reasonml.github.io's Issues

Home page title broken for me

Can consistently repro in Chrome and Opera

The first time I visit the site the title is empty (confirmed by viewing the page source)
Then when navigating around and going back home by clicking the site logo the home page title is the title of the previous page.

Font size too large [discussion]

Looking at a few pages, I find the font size to be too large. It gets computed as '18px'. I took a look at the documentation for other sites and find the text to be more readable, where they have a computed font size of '16px'.

See Rust and Elixir

JSX parser error

This line produces an error
<span className="filter-label"><span>(ReasonReact.stringToElement "Has interface")</span></span>
Though if to format it manually like this, then it works:

<span className="filter-label">
     <span>(ReasonReact.stringToElement "Has interface")</span>
</span>

screen shot 2017-08-11 at 12 43 39

So as you can see from error, it complains that code contains some reserved BuckleScript keyword.

P.S.
Was redirected from BuckleScript team: rescript-lang/rescript-compiler#1874

Idempotent deploy

High pri. We'd like a deploy on master to be no-op (at least for the content itself) if the source isn't changed.

Playground: Add support for Standard Library Modules

It would be great to make use of the standard library in the playground.

let len = List.length [];

gets transpiled correctly into

var List = require("stdlib/list");
var len = List.length(/* [] */0);
exports.len = len;
Bucklescript Compilation Error
require is not defined

Next page at the bottom of each section

I think it makes sense to add a next page button in the bottom right corner of each chapter/section. It gets tedious to scroll up (on small screens) after reading a section to find the next one.

Modules page edits

Before actually writing copy, I'd like to get feedback on a few suggested changes to the modules page in the language basics section.

Here's my proposal:

  • Add an introduction that defines modules by what they do and makes clear that they don't just group related code, but also serve as the means of abstraction and generic programming. (This occurs later on in the current article, but perhaps beyond where most people would read.)
  • Reorganize the example sections so that they are not grouped by language feature ("Module signatures", "Module functions") but instead by the purpose they serve ("Building abstractions", "Generic programming"). Add a callout to features from other languages that modules serve in Reason (templates, generics, type classes, etc.).
  • Similarly, rename syntax-related sections from the language names ("opening a module") to the purpose they serve ("Using code from another module").
  • Add more detail to the drawbacks section, which currently seems like a let-down after the rest of the article got you excited about modules. I'd like to add some more text on cases where modules aren't the right answer, and make clear that there are many cases where they are.

More prominent search

And maybe it let it float somewhere? It's nice to be able to stay on the page while searching

Quick start ideas

A few proposals for the quickstart section. I'm happy to do the work on these but wanted to get feedback first.

  • Fold the editor config section into the JS and native pages, since people may otherwise neglect to go back and do it.
  • Add some short hits to explain what the quickstart steps are doing ("Bucklescript is a ...", "OPAM is the ...") so people know
  • Gather some possible error cases and what to do about them.
  • Add a "Can't get it working?" section with where to get help. (Right now this is Discord, but that means that lots of people ask the same questions in there. It might be nice for the community to adopt a public, searchable, linkable place to provide definitive answers to common problems.)

Routing breaks after a while of use

After clicking on some links really fast I eventually get SimpleEventPlugin.js:219 Uncaught TypeError: Cannot read property 'remove' of undefined and routing no longer works.

Playground eval timeout to avoid the infiniteness of infinite loops

Auto-evaluating an accidental infinite loop caused by some intermediate editing state kind of sucks. Not just because the whole tab freezes, but you'll also lose everything you did up to that point. Even with the new localStorage, a kill & refresh will just land you straight back into the same infinite loop of suckiness.

So yea.. Timeout good.

reasonml windows installation instruction

Hi, as one of OS - windows user, I've been tried the different solution for installing reason on windows.
As last and most successful way which works mostly out of the box
is that package ocaml-on-windows.
Full IDE(vscode) support including merlin, refmt and other tools:
4abarrz3q-u79vtsntb3eq

What do you think, should we add that package to documentation? I think it will help a lot of window-users newcomers.
I can make a PR

Translation infra

Not sure what we should do here. High pri, as many translations are coming in.

Option to try new syntax in playground

I realise the new proposed syntax #1299 is a bit of a minefield, but would it be possible to have an option on the Try page to explicitly select the WIP (with appropriate warnings, 'beta' status, summary of differences/changes, code-snippets showing real-life examples/advantages, etc) branch.

I would like to try it for myself before jumping to conclusions and the only way right now seems to download the repo, switch branch and use rtop/refmt or build and run the website locally. This may also help with testing, as people try to (a) understand and explore and (b) think up pathological case and (c) convince people of benefits.

CodeMirror lint integration

I tried to get the CodeMirror lint plugin working with the online playground.

peek 2017-07-21 10-21

Seems doable. So I wanted to ask if you like the idea and if I should proceed and finalize the proof of concept.

New playground fails to compile code that is incorrectly pretty-printed, when it would normally work fine

OCaml's pprintast has some bugs (among other flaws). One of those bugs is that # operators will be printed incorrectly. E.g.

let f thing => thing##x

will be printed as

let f thing = ## thing x

And because the playground compiles the pretty-printed OCaml instead of using the AST from refmt directly, it will fail to compile. When refmt is used normally as part of the build process however, it uses the AST instead and will compile correctly.

Try Reason: Base64 encode URLs

The share URLs are extremely long. It might be a good idea to base64 encode the query param value to make it merely very long. See reason-tools for inspiration.

Upload source file into Playground.

It will be nice to be able to upload a source file and extract it's code into the playground. My initial thoughts are we add a custom right-click menu by attaching it's event listener to the playground textarea(reason). Something like this jsfiddle.

Right-clicking on a relative link triggers navigation

Steps to reproduce

Right-click on a link on reasonml.github.io that points to somewhere else on reasonml.github.io.

Expected behavior

I would be able to view the context menu for the link without navigation

What actually happens

My browser navigates to the link I right-click on.

Additional information

This doesn't appear to happen on other sites using Gatsby (e.g., Segment's blog, https://www.gatsbyjs.org/).

I'm using Firefox 56 on Linux.

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.