Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add syntax for using items only once #31

Open
fdb opened this issue Feb 22, 2018 · 3 comments
Open

Add syntax for using items only once #31

fdb opened this issue Feb 22, 2018 · 3 comments

Comments

@fdb
Copy link
Member

fdb commented Feb 22, 2018

When creating a new project it's often useful to only use terms once.

E.g. if you have a list of names or topics, you only want Seed to select from the list, but never show the same thing more than once.

We already have a syntax for re-using a selection:

{{ topic:one }}

I propose using the syntax for distinct elements:

{{ topic:~site }}

Internally what this does is generate a list of indices, one for each option, shuffled in random order. E.g. if a list of topics has 5 items the indices could look like this:

4 2 1 0 3

This implies that if you have 5 items, you can only use the {{ topic:~site }} token 5 times. If you use it more than 5 times, the list of indices is repeated (e.g. 4 2 1 0 3 4 2 1 0 3 ...).

@kunal-mohta
Copy link
Contributor

@fdb I wasn't quite able to understand it.
Could you make a sample sketch with comments as an aid?

@fdb
Copy link
Member Author

fdb commented Feb 26, 2018

Here's a demonstration for a news site generator:

https://seed.emrg.be/sketch/-L6GFAVSkAzLiyg3bu-s

screen shot 2018-02-26 at 09 36 37

Note that the topic "Lifestyle" occurs twice. I want to create a special syntax that forces the system to pick each topic only once, with the exception that if you use repeat more then there are topics, it will loop.

So if we have the topics News, Sports, Entertainment, Business, Politics, Lifestyle, Travel, the system will create a random ordering for the topic:~site key, e.g. indices 6 2 4 3 0 1 5. Each time you request topic:~site it will pick the next one from that randomly ordered list.

@kunal-mohta
Copy link
Contributor

Okay, so the final syntax should be something like this -

root:
- <h1>Fake News Gazette<h1/>
  {{ module|repeat(5) }}
  
module:
- <h2>{{ topic:~site }}</h2>
  {{ article|repeat(3) }}

topic:
- News
- Sports
- Entertainment
- Business
- Politics
- Lifestyle
- Travel

article:
- <p>Article goes here...</p>

?
And shouldn't the user be provided with an option to set a particular ordering of the topic:~site key along with the alternative of having a random order.

kunal-mohta added a commit to kunal-mohta/seed that referenced this issue Feb 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants