forked from ArtSabintsev/Magic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrintlnMagic.swift
27 lines (22 loc) · 1.25 KB
/
PrintlnMagic.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//
// PrintlnMagic.swift
//
// Created by Arthur Sabintsev on 1/28/15.
// Copyright (c) 2015 Arthur Ariel Sabintsev. All rights reserved.
//
import Foundation
/**
Writes the textual representation of `object` and a newline character into the standard output.
The textual representation is obtained from the `object` using its protocol conformances,
in the following order of preference: `Streamable`, `Printable`, `DebugPrintable`.
This functional also augments the original function with the filename, function name, and line number of the object that is being logged.
:param: object A textual representation of the object.
:param: file Defaults to the name of the file that called println(). Do not override this default.
:param: function Defaults to the name of the function within the file in which println() was called. Do not override this default.
:param: line Defaults to the line number within the file in which println() was called. Do not override this default.
*/
public func println<T>(object: T, _ file: String = __FILE__, _ function: String = __FUNCTION__, _ line: Int = __LINE__)
{
let filename = file.lastPathComponent.stringByDeletingPathExtension
print("\(filename).\(function)[\(line)]: \(object)\n")
}