Skip to content

Instantly share code, notes, and snippets.

View ionoy's full-sized avatar

Mihhail Maslakov ionoy

  • Estonia
View GitHub Profile
diff --git a/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n b/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n
index b533192..27471a9 100644
--- a/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n
+++ b/Nitra/DotNetLang/Collectors/BaseTypeReferenceSet.n
@@ -33,8 +33,9 @@ namespace DotNet
private mutable _ancestorTypes : HashSet[TypeSymbol];
private mutable _parentClassScope : Scope;
private mutable _parentFullScope : Scope;
+ private mutable _ancestorsFullScope : Scope;
private _parentTypes : HashSet[TypeSymbol];
@ionoy
ionoy / templates
Last active January 3, 2016 10:42
abstract ast NodeMember {
in Parent : Node;
in TemplateScope : Scope;
TemplateScope = TableScope("Templates", null);
}
ast Node : NodeMember {
Members : NodeMember*;
Members.TemplateScope = TemplateScope;
interface IService {
IObservable<int> Values { get; }
}
viewmodel StatusViewModel {
string Name = {
var val = stream service.Values;
return val + 3;
}
// Is translated to
viewmodel StatusViewModel
{
// Simple property definition, by default public and defines both get/set
string Name;
// Getter only
string Name get;
// Private field is everything prefixed by '_'
string _name;
new TestScheduler().With(sc => {
var bus = MessageBus.Current;
var quad = Substitute.For<IQuad>();
var vm = new MapViewModel(new Mission(quad, bus), quad, bus);
bus.SendMessage(new StartAddingWaypointsMessage());
Assert.IsTrue(vm.IsAddingWaypoints);
bus.SendMessage(new StopAddingWaypointsMessage());
new TestScheduler().With(sc => {
var client = Substitute.For<IQuadClient>();
var packets = new Subject<IMavLinkPacket>();
client.Packets.Returns(packets);
var quad = new Quad(client, MessageBus.Current);
packets.OnNext(new Mav.mavlink_heartbeat_t { base_mode = (byte)Mav.MAV_MODE_FLAG.SAFETY_ARMED });
sc.AdvanceByMs(1);
quad.State = new LandState();
////////// Usage ///////////
this.BindRadioButtons(v => v.ViewModel.RadioButtonValue,
v => v.RadioButtonA, "A",
v => v.RadioButtonB, "B");
////////// Implementation ///////////
public static IDisposable BindRadioButtons<TSender, TViewModelValue>(this TSender view,
Expression<Func<TSender, TViewModelValue>> viewModelProperty,
[Unit]
public class ReactiveToDo
{
[Dto] public class Task { Name : string; IsDone : bool; Priority : string; }
mutable _tasks = List.[Task]();
mutable _todoName = "New task";
mutable _todoPriority = "high";
public this()
Начали писать серию статей по NemerleWeb, и там понадобился макрос, который сделал бы объявление типов более лаконичными.
На данный момент первый пример — это классический todo список. Для такого списка неплохо было бы создать тип:
public class Task
{
public Name : string { get; set; }
public Priority : string { get; set; }
public IsDone : bool { get; set; }
}
public static string Translate(int commandId)
{
string ret;
if (Translations.TryGetValue(commandId, out ret))
return ret;
return "unknown";
}