Coder Social home page Coder Social logo

unckleg / home Goto Github PK

View Code? Open in Web Editor NEW

This project forked from objectionary/home

0.0 0.0 0.0 1.05 MB

Centralized curated storage of all EO objects together with their unit tests

Home Page: https://home.objectionary.com

License: MIT License

Shell 36.20% Python 25.64% Makefile 38.16%

home's Introduction

make Hits-of-Code Lines of code License

The term Objectionary was coined by David West in his great book Object Thinking. The original idea was to have a place where objects are hosted. Not libraries or software packages, but individual objects. This is exactly what this repository is about: it hosts EO objects. More details in this blog post.

When you are ready to publish a new object to this repository and make it visible for users of EO, you just create a new .eo file and place it to the right location, in one of the sub-directories inside the objects directory. Then, you add tests also written in EO, and place them next to your file in a subdirectory named after your object.

For example:

objects/
  org/
    eolang/
      bool.eo
tests/
  org/
    eolang/
      bool-tests.eo

Then, you add a meta to your object code, mentioning the location of the runtime package, where all necessary atoms are available. For example, you create a new random numbers generator:

+package org.example
+rt jvm org.example:example-runtime:1.0

[] > random
  [max] > next-int
    as-int.
      mul.
        max
        ^
  [] > @ /float

The meta +rt clearly points us to the place where a JAR with the class for random.@ atom can be found.

When ready, submit us a pull request. Our scripts will try to build and test all objects, together with your new one, to make sure you didn't break anything and your objects work together with your atoms. Then, we'll merge it and the repository will be updated. All users will be able to use your objects.

How to Publish a Library

Once the library is ready for publishing (i.e. all required changes are released) it can be published. Publishing includes several steps.

Create new Git branch from this repo to get the latest changes.

There is a Bash script pull.sh, which may help you publish the entire library. We use it to publish eo-files, eo-hamcrest, and others. In order to use it, you should first configure your library so that it publishes its full list of EO objects on each release into its gh-pages branch. See, how Rultor does it in eo-files: .rultor.yml. This is the file required by the script: objectionary.lst.

Then, when ready, run the script this way inside your local clone of this repo:

$ ./pull.sh objectionary/eo-files

Here, objectionary/eo-files is the name of GitHub repository you are trying to publish to Objectionary. The script will pull all necessary .eo sources from the repo and put them into the right places.

If several libraries need to be published as well then repeat this step for them as well.

Library objects within Objectionary must not contain any puzzles so it needs to be removed from pulled objects.

Next, the build needs to be verified. To do this, run the following:

$ make clean; make

If the build fails the issues need to be resolved.

If the build is clean, commit the changes and push the branch. Then, submit a pull request. Once your pull request is merged, all EO programmers will be able to use your library.

home's People

Contributors

c71n93 avatar graur avatar maxonfjvipon avatar mximp avatar renovate[bot] avatar rultor avatar volodya-lombrozo avatar yasamprom avatar yegor256 avatar

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.