Re: Change platform for reader conditionals

2018-07-19 Thread Alex Miller
With read-string in Clojure, the :clj platform feature is always active but 
it is possible to add additional features like :cljs:

(read-string {:read-cond :allow, :features #{:cljs}} "#?(:clj 1 :cljs 2)")

In this case, both :clj and :cljs features will be active, so it will 
return 1 because the read-cond checks in order. If you put the :cljs choice 
first, it would be taken. 

With tools.reader, you will not have this issue - you can use tools.reader 
to read with only the :cljs platform feature active.

(require '[clojure.tools.reader :as r])
(r/read-string {:read-cond :allow, :features #{:cljs}} "#?(:clj 1 :cljs 
2)")  ;; 2

And this is exactly how ClojureScript reads (using tools.reader).


On Thursday, July 19, 2018 at 12:44:57 AM UTC-5, Nikita Beloglazov wrote:
>
> Hi
>
> Is it possible to read a string containing reader conditionals using a 
> platform different from "current". In particular in from clojure I want to 
> read a string that contains :cljs reader conditionals and evaluate them as 
> if current platform is cljs.
>
> Example: if I run the following code from clj:
>
> (read-string {:read-cond :allow} "#?(:clj 1 :cljs 2)")
>
> then I get 1. But I want to get 2. Is there a way to do it in Clojure 
> somehow or maybe using tools.reader? 
>
> Thanks,
> Nikita
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Change platform for reader conditionals

2018-07-18 Thread Nikita Beloglazov
Hi

Is it possible to read a string containing reader conditionals using a
platform different from "current". In particular in from clojure I want to
read a string that contains :cljs reader conditionals and evaluate them as
if current platform is cljs.

Example: if I run the following code from clj:

(read-string {:read-cond :allow} "#?(:clj 1 :cljs 2)")

then I get 1. But I want to get 2. Is there a way to do it in Clojure
somehow or maybe using tools.reader?

Thanks,
Nikita

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.